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.
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 ?