
Rappelez-vous le poste autrefois populaire: "
PHP: une fractale de mauvaise conception "? Quand je l'ai lu pour la première fois, j'ai travaillé dans un endroit stupide avec beaucoup de projets PHP obsolètes. Elle m'a fait me demander si je devais partir et faire quelque chose de complètement différent de la programmation.
Heureusement pour moi, j'ai rapidement pu changer de lieu de travail et, plus important encore, PHP a pu évoluer "légèrement" à partir des versions 5. *. Et aujourd'hui, à travers cet article, je veux faire appel à des gens qui ne programment plus en PHP ou qui sont coincés dans des projets hérités.
Spoiler: Aujourd'hui, PHP, comme presque tous les langages de programmation, est plein de défauts. De nombreuses fonctions de base ont toujours des signatures incohérentes, les paramètres de configuration sont confus, il y a encore beaucoup de développeurs qui écrivent du code merdique, parce que dans leur projet actuel, cela ne fonctionne pas différemment ou parce qu'ils ne savent pas le contraire.Aujourd'hui, je veux jeter un œil au bon côté: concentrons-nous sur ce qui a changé et comment écrire du code PHP propre et maintenu. Je veux vous demander de laisser tomber les préjugés pendant quelques minutes.
Après cela, vous pouvez penser à PHP exactement comme avant. Bien que, très probablement, vous serez surpris par certaines des améliorations apportées à PHP au cours des dernières années.
TL DR
- PHP est activement développé, une nouvelle version est publiée chaque année
- Les performances de l'ère PHP 5 doublent, sinon triplent
- Il existe un écosystème extrêmement actif de frameworks et de bibliothèques
- Au cours des dernières années, de nombreuses nouvelles fonctionnalités ont été ajoutées à PHP et le langage continue d'évoluer.
- Des outils comme les analyseurs statiques ont beaucoup évolué ces dernières années et continuent d'évoluer.
Bref historique
Un bref aperçu du cycle de publication de PHP. La version actuelle est PHP 7.3, et la
version 7.4 est attendue fin 2019. PHP 8.0 sera la prochaine version après 7.4. Depuis la fin de l'ère de PHP 5. *, l'équipe de mainteneurs a essayé de maintenir un cycle de publication annuel, et cela s'est très bien passé au cours des quatre dernières années.
En général, chaque nouvelle version est activement prise en charge pendant deux ans et reçoit une autre année de «correctifs de sécurité». L'objectif est de motiver les développeurs PHP à maintenir la version à jour: appliquer de petites mises à jour chaque année est beaucoup plus facile que, par exemple, passer de 5.4 à 7.0.
Un calendrier mis à jour des dates de support pour différentes versions de PHP peut être trouvé
ici .
Enfin, PHP 5.6 était la dernière version de la branche 5. *, et 7.0 était la suivante. Si vous voulez savoir ce qui s'est passé avec PHP 6, vous pouvez écouter le
podcast PHP Roundtable.
Déboulons maintenant quelques idées fausses courantes sur le PHP moderne.
Performances PHP
En jours de la version 5. * Les performances PHP étaient ... moyennes, au mieux. Cependant, dans la version 7.0, des parties importantes du noyau PHP ont été réécrites à partir de zéro, entraînant une augmentation des performances de deux à trois fois.
Mais les mots ne suffisent pas. Regardons les tests. Heureusement, d'autres personnes ont passé beaucoup de temps à comparer les performances PHP. Je crois que
Kinsta a une belle liste mise à jour.
À partir de la version 7.0, les performances ne font qu'augmenter. Tant et si bien que les applications web PHP ont des performances comparables, et dans certains cas meilleures que les frameworks web dans d'autres langages. Jetez un œil à
cette suite de tests complète.
Bien sûr, les frameworks PHP ne surpasseront pas C et Rust, mais ils sont bien meilleurs que Rails ou Django, et comparables à ExpressJS.
Cadre et écosystème
En parlant de frameworks: PHP n'est plus limité à WordPress. Je peux vous dire en tant que développeur PHP professionnel: WordPress n'est en aucun cas un représentant de l'écosystème moderne.
En général, il existe deux principaux cadres d'application Web:
Symfony et
Laravel . Et quelques plus petits: Zend, Yii, Cake, CodeIgniter, etc. Mais si vous voulez savoir à quoi ressemble le développement PHP moderne, un bon choix serait de connaître l'un des deux plus grands.
Les deux frameworks (Symfony et Laravel) ont un large écosystème de packages et de produits. Des panneaux administratifs et CRM aux packages autonomes (dans l'original - «packages autonomes»), du CI aux profileurs, ainsi que de nombreux services tels que les serveurs de socket Web, les gestionnaires de files d'attente, l'intégration des paiements; franchement, trop pour tout lister.
Cependant, ces cadres sont destinés à un développement direct. Si vous avez juste besoin de gérer votre contenu, les plateformes comme WordPress et CraftCMS ne font que s'améliorer.
Une façon de mesurer l'état actuel de l'écosystème PHP est de regarder packagist, le principal référentiel de packages pour PHP. Il croît de façon exponentielle. Avec environ 25 millions de téléchargements par jour, nous pouvons dire à juste titre que l'écosystème PHP n'est plus la faiblesse qu'il était.
Jetez un œil à ce graphique, qui montre le nombre de packages et de versions dans le temps. Il peut également être consulté sur
le site Web du packagist .

En plus des cadres d'application et du CMS, ces dernières années, nous avons également constaté une augmentation des cadres asynchrones.
Ces frameworks et serveurs, écrits en PHP ou dans d'autres langages, permettent l'utilisation de PHP véritablement asynchrone. Les exemples incluent
Swoole ,
Amp et
ReactPHP .
Depuis que nous sommes entrés dans le monde asynchrone, des choses comme les sockets Web et les applications avec de nombreuses opérations d'E / S sont devenues vraiment pertinentes dans le monde PHP.
La liste de diffusion interne - un endroit où les principaux développeurs discutent du développement du langage - a également parlé de l'ajout de libuv au noyau. Pour ceux qui ne connaissent pas libuv, c'est la même bibliothèque que Node.js utilise pour assurer toute son asynchronie.
La langue elle-même
Bien que l'asynchronisation et l'attente ne soient pas encore disponibles, ces dernières années, de nombreuses améliorations ont été apportées au langage lui-même. Voici une liste incomplète de nouvelles fonctionnalités en PHP:
- Fonctions fléchées
- Opérateur d'union avec null
- Traits
- Propriétés typées
- Déballer l'opérateur
- Compilateur Jit
- Interface de fonction externe
- Cours anonymes
- Déclaration de type de retour
- Cryptographie moderne
- Générateurs
- Beaucoup plus
Alors que nous parlons des fonctionnalités du langage, abordons également le sujet de l'évolution du langage aujourd'hui. Il y a une équipe de responsables bénévoles qui font avancer la langue, tandis que la communauté peut également proposer des RFC.
Ces RFC sont ensuite discutés sur la liste de diffusion interne, qui peut également être lue sur Internet. Avant d'ajouter une nouvelle fonctionnalité linguistique, un vote doit être effectué. Seuls les RFC avec une majorité de votes, au moins ⅔ de tous les électeurs, peuvent être inclus dans le noyau.
Environ 100 personnes participent au vote, et il n'y a aucune obligation de voter sur chaque RFC. Le groupe de personnes qui ont la possibilité de voter, bien sûr, comprend les responsables, car ils doivent maintenir une base de code. En plus d'eux, il existe un groupe dont les membres ont été sélectionnés individuellement dans la communauté PHP. Ce groupe est composé de responsables de la documentation PHP, d'auteurs de grands projets PHP et d'éminents développeurs de la communauté PHP.
Bien que la majeure partie du développement se fasse sur une base volontaire, l'un des principaux développeurs PHP, Nikita Popov, a récemment été embauché par JetBrains pour travailler sur le langage à plein temps. Un autre exemple est la Linux Foundation, qui a récemment décidé d'investir dans le Zend Framework. Ces travaux et acquisitions garantissent la stabilité de l'avenir de PHP et de son développement.
Boîte à outils
Outre le noyau lui-même, au cours des dernières années, nous avons constaté une augmentation des outils qui l'entourent.
Les analyseurs statiques de
psaumes tels que ceux créés par Vimeo,
Phan et
PHPStan viennent à l'esprit .
Ces outils analysent statiquement votre code PHP et signalent toutes les erreurs typiques, les bugs éventuels, etc.
l'amélioration du langage, TS fait conditionnellement la même chose au-dessus de JS) , bien que pour le moment le langage PHP ne soit pas transpilable, donc la syntaxe personnalisée n'est pas autorisée.
Bien que nous devions encore compter sur les dockblocks et la dactylographie, Rasmus Lerdorf, le créateur de PHP, a
mentionné l' idée d'ajouter un mécanisme d'analyse statique au noyau. Cette tâche contient beaucoup de potentiel, mais elle est énorme en termes de coûts de main-d'œuvre.
En parlant de transposition, il convient de noter qu'il y a eu des tentatives pour étendre la syntaxe PHP non pas au niveau du noyau, mais au niveau des bibliothèques utilisateur, comme implémenté en JavaScript. Un projet appelé
Pre fait exactement cela: il vous permet d'utiliser la nouvelle syntaxe PHP qui encapsule dans le code PHP normal.
Bien que cette approche ait fait ses preuves dans le monde JavaScript, elle ne peut gagner de l'argent en PHP que si un support approprié est fourni pour l'IDE et l'analyse statique. C'est une idée très intéressante, mais elle a encore beaucoup de chemin à parcourir avant de pouvoir être qualifiée de courant dominant.
En conclusion
Malgré tout cela, n'hésitez pas à penser à PHP comme un langage terrible. Il a définitivement ses défauts et un héritage de 20 ans, mais je peux dire avec confiance que j'aime travailler avec lui.
Avec lui, je peux créer des logiciels fiables, bien entretenus et de haute qualité. Les clients pour lesquels je travaille sont satisfaits du résultat final, tout comme moi.
Malgré le fait que vous pouvez toujours écrire du très mauvais code lorsque vous travaillez avec PHP, je dirais que c'est un excellent choix pour le développement Web, s'il est utilisé correctement.
Êtes-vous en désaccord? Écrivez dans les commentaires pourquoi!