https://a.storyblok.com/f/270183/1368x665/bab3dd656c/php-legacy_2024-new.png

PHP est un héritage, en 2024

Publié le November 19, 2024

Temps de lecture : 11 minutes

Chez Vonage, nous voyageons beaucoup dans le cadre de notre travail. Je parle à de nombreux développeurs de tous horizons, et je peux affirmer avec certitude que l'une des questions les plus fréquemment posées est la suivante : Pourquoi faites-vous encore du PHP ? Des variantes de cette question peuvent être "PHP n'est-il pas censé être mauvais ?" A plusieurs reprises, la personne à qui je parlais avait fait du PHP en 2012. Ou en 2010. J'ai oublié. Pour des raisons que je ne comprends pas, nous sommes en train de vivre une nouvelle vague de ce genre dans les forums en ligne, et donc plus de commentaires "PHP est terrible" sortent du bois.

Quelles sont les causes de ce phénomène ? Pourquoi PHP est-il "mauvais" ?

Tribus

Je considère la plupart des développeurs comme des nomades qui finissent par "trouver leur tribu". Après tout, c'est essentiellement ce que sont les communautés technologiques. L'une des difficultés du début (outre le fait de décrocher son premier poste) est d'être accepté ou de choisir la tribu dans laquelle on souhaite s'installer. Pour certains, il est difficile de se faire accepter, et c'est là qu'un terrain d'entente ou de l'humour peuvent être utilisés pour les diplômés ou les participants à un camp d'entraînement.

À cet égard, la blague bien connue est "PHP est mauvais", mais il n'y a plus de raisonnement derrière cela - l'explication la plus proche que quelqu'un donnera sera probablement un article de blog massif et décousu écrit il y a des années sur de très nombreuses choses que vous ne rencontrerez jamais ou qui ne sont qu'une gêne pour son auteur. Peu importe que des contre-postes ont été publiés, comme celui-ci de Slack Engineering qui expliquent la nuance que n'importe quelle application peut être mal écrite dans n'importe quel langage de programmation. Je suppose que certains pourraient être prompts à souligner que Slack a initialement construit sa plateforme avec le langage Hackun dérivé de PHP créé par Facebook, ou que la plupart des nouveaux services qu'ils ont ajoutés depuis sont en Go ou Node.

Le décor est donc planté : c'est mauvais.

Le mythe auto-entretenu

PHP est tellement mauvais qu'un certain système d'exploitation a décidé d'émettre un avertissement lors de l'utilisation de la version livrée avec lui :

AVERTISSEMENT : PHP n'est pas recommandé

Indépendamment du fait que la version livrée avec le système d'exploitation était déjà obsolète, les gens ont défendu la formulation en expliquant que l'intention était d'avertir les gens de l'ancienne version de PHP livrée avec le système d'exploitation.

Il s'est avéré qu'il en allait de même avec Python 2.7, mais, fait crucial, le message d'erreur indiquait explicitement "Python 2.7 n'est pas recommandé"sans l'étiquette d'avertissement. Ce n'est pas ce que dit ce message d'erreur.

Certaines personnes peuvent trouver cela drôle, mais je ne trouve aucun humour dans le fait que mon système d'exploitation me dise quel langage de programmation je dois utiliser. C'est la perpétuation de la mauvaise réputation de PHP, et c'est pourquoi ce clin d'oeil est acceptable.

Alors, pourquoi parlons-nous encore de PHP s'il est censé être mauvais ?

La nécessité est la mère de l'invention

Il existe un autre langage de programmation qui a suivi exactement le même schéma d'évolution, et c'est JavaScript. Comme JavaScript était le langage de de-facto langage de facto fonctionnant dans un navigateur avec un moteur intégré, il a a dû évoluer depuis ses débuts.

De même, en raison de l'essor des systèmes de gestion de contenu, qui sont des backends écrits en PHP, tels que WordPress et Drupal : PHP a dû évoluer. L'évolution d'un langage, du hack C pratique de Rasmus Lerdorf pour son propre usage de script à un langage de programmation général à part entière conçu pour le web, n'est pas le fruit du hasard. Zend a créé le moteur Zend et a obtenu l'adhésion des principaux fournisseurs de l'époque, tels qu'Oracle et IBM.

Ces choses se produisent parce que les gens l'utilisentde la même manière que les relations et les outils de l'écosystème JavaScript et ECMAScript évoluent constamment.

Cette évolution s'est produite précisément parce que PHP est toujours aussi largement utilisé - sans cette utilisation répandue, nous n'aurions jamais vu des choses comme le passage à un système de classes entièrement orienté objet en 5.0, les traits en 5.4, l'introduction des générateurs en 5.6, un moteur retravaillé en PHP7 qui a vu une augmentation des performances de 100% dans certains cas, un compilateur JIT pour 8.0 et les enums natifs en 8.1. Le cycle de vie de Perl, par exemple, n'a pas connu d'évolution rapide parce que les gens ont cessé de l'utiliser. Quels sont donc les résultats réels de cette évolution que nous constatons aujourd'hui ?

Mythe n° 1 : PHP n'est pas évolutif.

Essayez de dire cela à Fathom Analytics, qui a réécrit son application en Laravel. ont réécrit leur application en Laravel et traitent des millions de requêtes par seconde.

Soyons clairs : tout microservice ou système distribué n'évoluera pas efficacement si vous le concevez mal.

Le cas de Fathom montre qu'il est possible de le faire - dans leur cas, au sein de l'espace Laravel - de manière très efficace avec un arsenal d'outils provenant de Laravel. Comme Jack le mentionne dans le billet de blog ci-dessus, la critique des programmeurs utilisant d'autres langages est que PHP ne peut pas évoluer parce que les benchmarks le disent.

Mais lorsque vous créez une application à grande échelle, avez-vous besoin qu'elle traite 1 million de requêtes par minute ? Probablement pas. Mais ce serait certainement agréable et rapide dans Node parce que c'est asynchrone, n'est-ce pas ? Probablement. Vous en souciez-vous ? Peu probable à ce stade.

Mythe n°2 : PHP est lent

On reproche souvent à PHP d'être monotâche, ce qui oblige à créer de nouveaux processus pour créer des travaux simultanés ou des charges de travail horizontales. La technologie PHP-JIT a été introduit en PHP8.0mais ce n'était que le début des changements qui ont fait de la vitesse l'objectif principal de l'évolution de PHP. J'ai été introduit à OpenSwoole (alors Swoole) dès 2014et j'ai vu une solution d'extension pour le problème de l'utilisation d'un seul thread. L'avènement des Fibres natives en PHP8.1 a ensuite signifié que les coroutines et le PHP asynchrone pouvaient être réalisés. A bon exemple de benchmarking peut être trouvé iciLe résumé de cette évolution vers la vitesse signifie qu'il y a maintenant plusieurs options pour les développeurs PHP d'écrire des applications à la vitesse de l'éclair.

Coroutines à fibres

ReactPHP et amphp sont deux exemples d'utilisation de fibres pour du PHP asynchrone non-bloquant. ne sont même pas nouveaux. Ils fonctionnent en fait comme la boucle d'événement de Node. Si vous voulez vérifier quels types de vitesses vous pouvez obtenir à partir de ceux-ci, voici un exemple de l'un des membres de l'équipe de ReactPHP, Cees-Jan Kiewiet. Spoiler : c'est rapide.

Nouvelle durée d'exécution

Nous ne comptons donc pas Roadrunner et OpenSwoole car ils ne sont pas nouveaux. Mais vous rappelez-vous quand je disais que la nécessité est la mère de l'invention ? Eh bien, cette année a vu quelque chose de tout à fait étonnant : le lancement d'un nouveau serveur d'applications PHP, FrankenPHP.

Pourquoi l'appelle-t-on FrankenPHP ? Parce que le besoin d'évolution de PHP a conduit à coder le nouveau runtime en Go, de la même manière que Roadrunner, sauf qu'il a été construit au-dessus du serveur web Caddy. Cela a-t-il un sens ? C'est peut-être étrange, alors non. Est-ce rapide ? Oui. Le fait que ce soit en Go vous importe-t-il ? J'espère que non. Voici un exemple de FrankenPHP utilisé par Laravel Octane. Spoiler : c'est rapide.

D'où vient FrankenPHP ?

Crédit photo : FrankenPHP https://frankenphp.dev/

Le créateur de FrankenPHP est Kévin Dunglas. Ce qui est intéressant à noter, c'est que Kévin est un membre du noyau du Symfony FrameworkOn pourrait donc dire que Symfony a effectivement sponsorisé la création d'un nouveau runtime PHP plus rapide en sponsorisant son travail..

Il y a cependant une autre raison de s'intéresser au travail de Kévin, car il est également le créateur de la Plate-forme API.

Qu'est-ce qu'une plateforme API ?

Crédit photo : API Platform https://api-platform.com/

Ah, c'est vrai, je suis content que vous ayez posé la question. Eh bien, PHP est tellement ancien que vous pouvez maintenant utiliser un cadre backend sur mesure conçu uniquement pour le développement rapide d'API web REST/graphQL. uniquement pour le développement rapide d'API web REST/graphQL. Il peut être utilisé avec Symfony ou Laravel, et contient des fonctionnalités telles que la sélection des normes de réponse de votre API, la gestion automatique de la documentation avec OpenAPI ou SwaggerUI, l'outil de test automatisé et la gestion des performances/du cache. L'API Web du prototypage à la production ?

Spoiler : c'est rapide.

Notes de la Communauté : De plus en plus grand

Crédit photo : Participants à la DrupalCon Barcelona 2023

https://events.drupal.org/barcelona2024

Chaque année, les développeurs me disent que l'utilisation de PHP (et donc le développement de PHP) diminue chaque année. Cela coïncide chaque année avec la publication de l'enquête des développeurs de enquête StackOverflow auprès des développeurs. Je pense qu'il est important de savoir que le chiffre très répandu de 70% (ou à peu près) du web en PHP est dû à WordPress. Oui, il s'agit de PHP, mais c'est le succès de WordPress en tant que produit qui explique ce chiffre. Avec un chiffre aussi exagéré, il ne peut que baisser avec le temps, car de plus en plus de frameworks CMS et même de produits SaaS Cloud CMS tels que Contentful ou Strapi augmentent leur utilisation.

L'utilisation de PHP est-elle en train de s'estomper ? D'un point de vue numérique, oui, car les utilisateurs se détournent de WordPress, mais les communautés de PHP sont toujours incroyablement fortes. L'utilisation de trois de ses principaux frameworks augmente, ce qui signifie que de nouveaux projets sont développés. DrupalCon accueille en moyenne 3 000 participants par conférence, et plusieurs conférences sont organisées chaque année dans le monde entier. SymfonyCon et Laracon se tiennent également dans le monde entier, plusieurs fois par an, et accueillent en moyenne entre 1000 et 3000 participants. Pour moi, cela ne montre pas une langue en voie de disparition. Il s'agit d'un langage en pleine croissance.

Peut-être que les gens commencent à s'en rendre compte ?

On dit que l'imitation est la plus grande forme de flatterie. En gardant cette philosophie à l'esprit, il est intéressant de noter que l'approche de Laravel en matière de développement complet (elle-même basée à l'origine sur Rails) a donné naissance à des frameworks complets en dehors de l'espace PHP. Rencontrer AdonisJSun framework Node basé sur Laravel. Vous n'en avez pas assez ? Voici Waspégalement un Node Framework basé sur Laravel. Que pensez-vous de Goravelun framework Go basé sur... eh bien, je pense que nous savons ce qui nous attend.

L'approche spécifique de Laravel à l'égard de l'expérience du développeur est ce qui lui a valu la fidélité des développeurs. À tel point que l'influenceur technologique ThePrimeagen a froncé les sourcils en regardant la vidéo d'Aaron Francis PHP ne craint plus rien d'Aaron Francis et l'a visionnée. Les résultats ont été une approbation inattendue. Une conférence de sa part à LaraconUS cette année a complété le tout jusqu'au moment où Laravel a annoncé avoir levé 58 millions de dollars en capital-risque. Vous avez peut-être abordé cet article en pensant que PHP est en train de mourir, mais avec ce genre d'allées et venues, je dirais que ce n'est peut-être pas le cas.

Le fait est que toutes ces discussions sur les frameworks sont bonnes et tout, mais... qui fait évoluer le langage PHP ?

La Fondation PHP

Si vous n'êtes pas un développeur PHP, j'espère avoir attiré votre attention sur cet article. Pour la petite histoire : pendant des années, PHP n'a été maintenu que par deux personnes, Nikita Popov et Dmitry StogovGrâce au parrainage de JetBrains et de Zend respectivement. Oui, il y a eu une quantité décente de soutien de la part des gestionnaires de versions, trop nombreux pour être mentionnés, mais cela représente encore beaucoup de travail pour deux développeurs en termes de fonctionnalités. En 2022, La Fondation PHP a été créée, avec un conseil d'administration composé de vétérans de PHP et de représentants d'Automattic, de Zend, de Private Packagist, de JetBrains, de Tideways, de Perforce et de Symfony.

La Fondation rémunère 10 ingénieurs - certains à temps plein, d'autres à temps partiel. Il est assez rare d'avoir ce type de gouvernance ouverte, alors que les configurations les plus courantes sont les suivantesle dictateur bienveillant à vie"ou soutenues par le secteur commercial. Ce voyage ne peut pas continuer sans eux, donc si vous voulez voir où ce voyage de 30 ans continue, vous pouvez consulter https://thephp.foundation/sponsor/ pour aider la langue dans sa prochaine itération.

Conclusion

Je ne sais pas pourquoi nous assistons à une résurgence de "lolphp" dans les coins d'Internet, mais franchement, je ne suis pas vraiment inquiet. Je pense cependant que cela limite quelque peu les capacités des développeurs lorsqu'ils répètent des lignes sur quelque chose de mauvais, qui viennent probablement de quelqu'un qui a écrit le langage il y a 15 ans. PHP est moderne, il est totalement différent de ce qu'il était il y a 15 ans, il a une communauté florissante et un système d'outils. Des choses comme PsalmPHP et PHPStan qui permet l'analyse statique grâce à l'arbre syntaxique abstrait, sont des outils de premier ordre. Si certains des plus grands influenceurs technologiques sont prêts à tenter l'expérience, pourquoi pas vous ? Vous pouvez commencer à essayer les communications de Vonage en allant chercher le Vonage PHP SDKdont je suis le mainteneur principal. Besoin d'aide ? Vous pouvez rejoindre notre communauté Slack ou nous contacter sur X. Besoin de conseils ? Vous pouvez réserver une courte session avec moi.

Partager:

https://a.storyblok.com/f/270183/400x385/12b3020c69/james-seconde.png
James SecondeDéveloppeur PHP senior Advocate

Acteur de formation avec une thèse sur la comédie, je suis venu au développement PHP par le biais de la scène des rencontres. Vous pouvez me trouver en train de parler et d'écrire sur la technologie, ou de jouer/acheter des disques bizarres de ma collection de vinyles.