PHP 8 a été officiellement lancé le 26 novembre 2020, cela fait donc un peu plus d’un an que nous avons pu expérimenter les différentes nouveautés introduites par cette version très attendue ! Comme pour toute montée de versions majeures, celle-ci est venue avec son lot d’incompatibilités avec les anciennes versions.
Nous vous proposons dans cet article de récapituler tout d’abord les différentes nouveautés apportées par PHP 8 et PHP 8.1. Nous aborderons ensuite les incompatibilités et risques de bugs en cas de montée de versions depuis PHP 7. Enfin, nous vous donnerons notre checklist pour une montée de version réussie et les outils permettant de l’effectuer simplement et rapidement.
Les nouveautés du PHP 8:
La nouvelle mise à jour de PHP 8 s’accompagnait de nouvelles fonctionnalités très attendues ; parmi elles :
  • Le compilateur JIT (Just In Time) : le compilateur JIT vient remplacer la représentation intermédiaire que sont les opcodes en code natif. Cette nouvelle fonctionnalité améliore nettement les performances si le code PHP effectue des actions gourmandes en ressources CPU. En revanche, le gain de performance reste moindre dans le cas d’une application web standard, où la majorité du temps d’exécution d’une requête est composé d’IO (requête de base de données, lecture de fichiers);
  • Les arguments nommés :  la fonctionnalité est présente depuis de nombreuses années dans beaucoup de langages, dont Python. Il est dorénavant possible de spécifier uniquement les paramètres requis sans tenir compte de ceux qui sont optionnels. Les arguments sont indépendants de l’ordre et auto-documentés;
  • Type Union : au lieu d’établir une documentation annexe avec PHP, il est désormais très simple de gérer l’union de variables ; ces déclarations d’unions sont désormais validées nativement par PHP 8;
  • Weakmaps : encore une nouvelle fonctionnalité pour des performances améliorées ! Weakmaps vient étendre les fonctionnalités de Weakrefs et apporter une économie de ressources dans la manipulation et surtout la suppression des objets;
  • L’opérateur Nullsafe : terminé les vérifications conditionnelles de null ! Avec l’opérateur Nullsafe, si l’évaluation d’un élément de la chaîne n’est pas concluante, la chaîne complète est considérée comme null.

Pourquoi migrer vers PHP 8 ?

La première question que l’on se pose lors de la sortie d’une nouvelle version majeure est de savoir si les nouveautés apportées par celle-ci justifie de consacrer plus ou moins rapidement du temps à la mise à jour de son code et dans la gestion des risques associés.
De notre propre expérience, passer à PHP 8 présente des avantages considérables :
  • L’argument majeur est que PHP 8 vient avec une amélioration de performance non négligeable. Sans rentrer dans les détails niveau machine, PHP 8 permet d’effectuer de 20 % à 30 % de requêtes en plus par seconde par rapport aux versions antérieures (cela est précisé ici);
  • PHP 8 vient renforcer grandement l’aspect « typé » du langage PHP, PHP peut donc garantir que les bons types soient passés au lieu de faire des checks manuels. Cela vient renforcer la maintenabilité du code et ainsi passer à PHP 8 permet donc de réduire votre dette technique à long terme;
  • Enfin, PHP 8 a mis un accent majeur sur le fait de rendre le code PHP plus lisible et documenté ce qui facilitera la montée en compétence des équipes de développement.

Ainsi, chez TATBIKAT nous sommes persuadés que vous ne regretterez pas le temps consacré à la montée de version de votre environnement ! Et pour les éventuelles complexités, pas de soucis cet article est là pour vous aider.