Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Comment lire ce livre

On vous demande de prendre PHP au sĂ©rieux, et vous vous en passeriez bien. Le langage a trente ans, on l’associe au pire code qu’on vous ait jamais mis sous les yeux, et personne n’en parle dans les confĂ©rences que vous suivez. Il revient pourtant sans cesse : dans la pile technique d’une entreprise que vous respectez, dans les offres d’emploi, derriĂšre un site qui encaisse plus de trafic que le vĂŽtre. J’ai Ă©crit ce livre pour rĂ©gler cette contradiction avec des preuves plutĂŽt qu’avec de l’enthousiasme.

Chaque chiffre de ce livre a une source et une date, et l’annexe les recense pour que vous puissiez vĂ©rifier chacun d’eux. Un nombre dans le texte est suivi de sa provenance et de sa date, entre parenthĂšses. Un chiffre de fournisseur, une Ă©tude de cas auto-dĂ©clarĂ©e ou un benchmark synthĂ©tique sont signalĂ©s comme tels dans la phrase mĂȘme oĂč ils apparaissent, et quand je ne sais pas, je le dis. Vous ne devriez jamais avoir Ă  vous demander si une phrase Ă©nonce un fait ou un souhait.

Pourquoi le doute est raisonnable

La rĂ©putation a Ă©tĂ© mĂ©ritĂ©e. Pendant sa premiĂšre dĂ©cennie, PHP a Ă©tĂ© permissif jusqu’à la faute : les variables surgissaient de nulle part, "abc" == 0 valait vrai, les erreurs s’imprimaient dans la page et l’exĂ©cution continuait, les requĂȘtes vers la base de donnĂ©es se bricolaient par concatĂ©nation de chaĂźnes, et la bibliothĂšque standard grossissait une fonction Ă  la fois, sous le nom que son auteur prĂ©fĂ©rait cette semaine-lĂ . Une gĂ©nĂ©ration a appris Ă  programmer sur ce PHP-lĂ  et en a Ă©crit Ă©normĂ©ment, et une bonne partie de ce code tourne encore. L’essentiel de ce qu’on vous a montrĂ© sous l’étiquette « PHP » date de cette pĂ©riode.

Le langage que vous Ă©valueriez aujourd’hui est un autre objet. PHP 7 (2015) a reconstruit le moteur et ajoutĂ© les dĂ©clarations de types scalaires. PHP 8 (2020) a apportĂ© les types union, match, les arguments nommĂ©s, les attributs, les Ă©numĂ©rations, les propriĂ©tĂ©s readonly, les callables de premiĂšre classe et un compilateur JIT, et il a appris Ă  l’interprĂ©teur Ă  lever une exception lĂ  oĂč il devinait. Une version est sortie chaque annĂ©e depuis, fin novembre ou dĂ©but dĂ©cembre. La PHP Foundation salarie des dĂ©veloppeurs du cƓur depuis 2021, le gestionnaire de paquets est universel, et deux analyseurs statiques vous donnent l’essentiel de ce qu’un compilateur vous donnerait. La syntaxe actuelle est dans Le langage en 2026, et les gens qui la publient sont dans Gouvernance et pĂ©rennitĂ©.

Une partie de la rĂ©putation reste mĂ©ritĂ©e. Les chaĂźnes sont des suites d’octets, la bibliothĂšque standard garde ses noms historiques, il n’y a ni gĂ©nĂ©riques ni threads en espace utilisateur, et le runtime est synchrone par dĂ©faut. Une grande part du PHP qui tourne sur le web public est vieille, parce que l’hĂ©bergement qui la fait tourner est vieux. Chacune de ces limites se trouve dans le chapitre oĂč vous iriez la chercher, Ă  cĂŽtĂ© de la pratique qui l’entoure aujourd’hui, et LĂ  oĂč PHP est le mauvais choix rassemble les cas oĂč le conseil honnĂȘte est de choisir autre chose.

Une feuille de papier divisée en deux colonnes par un trait vertical. La colonne de gauche est coiffée d'une coche et contient quelques barres bien nettes et un petit éléphant ; la colonne de droite est coiffée d'une croix et contient elle aussi quelques barres. Une main tient un stylo au-dessus de la feuille et remplit les deux colonnes

Les questions, dans l’ordre

Chaque chapitre rĂ©pond Ă  une question que vous poseriez, dans l’ordre d’une revue de due diligence, de l’extĂ©rieur vers l’intĂ©rieur.

Empreinte demande qui tourne sur PHP et Ă  quelle Ă©chelle, et rĂ©pond par les parts de marchĂ© du web, par les plateformes bĂąties dessus et par les organisations qui dĂ©crivent leur production PHP avec leurs propres mots. Le runtime explique le modĂšle d’exĂ©cution, parce que l’essentiel de ce que PHP fait bien et de ce qu’il ne sait pas faire en dĂ©coule. DĂ©bit et latence et Concurrence donnent les chiffres de performance, avec le round du benchmark, le matĂ©riel et le test nommĂ©s, et avec, sur le mĂȘme graphique, les langages qui battent PHP sur le mĂȘme test.

Le langage en 2026 est le tour de la syntaxe le plus court possible, pour ceux qui jugent un langage en le lisant. L’écosystĂšme compte les paquets, les frameworks et les outils. Gouvernance et pĂ©rennitĂ© couvre le processus des RFC, le calendrier des versions, le processus de sĂ©curitĂ© et l’argent, et CoĂ»t de possession regarde le recrutement, l’hĂ©bergement et les mises Ă  niveau.

LĂ  oĂč PHP est le mauvais choix est le chapitre qui rend les autres crĂ©dibles. Une Ă©valuation en une semaine est un protocole, quoi installer, quoi mesurer, quoi lire, pour que la dĂ©cision que vous prendrez repose sur vos chiffres et non sur les miens.

Les rÚgles que je me suis fixées

Les comparaisons sont symĂ©triques. Quand un graphique montre PHP devant un langage sur une mesure, le texte nomme une mesure oĂč ce langage est devant, quand elle existe. Les options courantes que vous vous attendez Ă  voir, Node.js, Python, Java, C#, Go, Ruby, ne sont jamais Ă©cartĂ©es d’un graphique parce qu’elles y feraient bonne figure.

Les noms viennent avec des preuves. Une entreprise n’apparaĂźt ici que si ses propres ingĂ©nieurs, dans un billet de blog, une confĂ©rence, un dĂ©pĂŽt ou un rapport, disent qu’elle fait tourner PHP en production, et l’annexe renvoie Ă  ce document avec sa date. Les entreprises qui font tourner Hack sur HHVM, un langage issu d’un fork de PHP, ne sont pas prĂ©sentĂ©es comme des utilisatrices de PHP, si tentant que fĂ»t le logo.

Les frameworks et les outils sont listĂ©s, pas recommandĂ©s. Ils apparaissent par ordre alphabĂ©tique. La PHP Foundation, sous l’égide de laquelle ce livre paraĂźt, promeut le langage et ses standards plutĂŽt qu’un fournisseur, et je fais de mĂȘme.

Comment le vérifier

Chaque chapitre se termine par quelque chose que vous pouvez vĂ©rifier en un aprĂšs-midi : un tableau de bord public Ă  ouvrir, un benchmark Ă  relancer sur votre matĂ©riel, une commande Ă  taper. Prenez-les au sĂ©rieux. Un chiffre que j’ai mal relevĂ©, ou qui a vieilli depuis que je l’ai Ă©crit, est exactement ce que vous devriez trouver, et Sources vous donne l’URL pour le trouver.

Votre premiĂšre question est sans doute celle par laquelle j’ai commencĂ© moi aussi : qui tourne vraiment lĂ -dessus ?