PHP 8, la nouvelle version de PHP, est désormais disponible à la création de nouvelles instances Simple Hosting ! Mettez à jour le langage de votre site web dès maintenant.

Il s’agit d’une nouvelle version majeure, concoctées par les concepteurs de ce language largement utilisé par les développeurs et qui apporte son lot de nouveautés. État des lieux des principales évolutions liées à la sortie de PHP 8. Découvrez PHP 8 !

PHP 8 : Compilation à la volée avec JIT (Just In time)

Il s’agit là de la principale évolution, relative à PHP 8, attendue depuis longtemps pour améliorer la performance. Si PHP est à l’origine un langage interprété (donc non compilé), l’introduction de compilateurs JIT permet de la compilation de certaines parties du code pendant son exécution pour le conserver en cache. Cela permet des gains de vitesse d’éxécution  non négligeables pour certaines applications web.

PHP 8

Le compilateur JIT permet une amélioration de la performance de plus de 45 %, calculé sur le temps moyen nécessaire à l’exécution. Si les données des tests de performances sont très prometteuses, les gains pour des applications réelles (WordPress par exemple) restent encore à être vérifiés.

Les nouvelles fonctionnalités du langage PHP 8

En plus du compilateur JIT, PHP 8 apporte une série de nouveautés, parmi lesquelles on retrouve :

  • Les union types 2.0 : permettent de définir des types d’unions sous forme de type à choix multiples.
  • Les attributs v2 : ajoutent des métadonnées afin de spécifier les propriétés des objets, des éléments ou des fichiers.
  • Les annotations en PHP 8. Il existe maintenant des annotations natives. L’idée d’attributs n’est pas nouvelle, et si vous travaillez avec doctrine ou Symfony, vous l’avez probablement déjà rencontrée sous une autre forme appelée annotations. Fonction de démonstration : /** @Route (« /demo ») */ function demo () { return ‘Bonjour tout le monde !’ ; } L’idée est d’ajouter une métadonnée à une méthode, une propriété, une fonction ou une classe. Le problème était qu’il n’y avait pas de manière naturelle de gérer les choses jusqu’à présent.
  • Les WeakMaps : permettent d’économiser des ressources lors de la manipulation des objets,
  • La virgule de fin dans la liste des paramètres, incluant les fonctions, les méthodes et les fermetures,
  • L’expression throw : convertit cette déclaration en une expression qui peut être utilisée dans un contexte où elle est autorisée. 
  • La syntaxe de classe étendue aux objets : elle récupère le nom de la classe d’un objet donné avec ::class. Dans les versions précédentes, il fallait utiliser get_class() pour attribuer une classe à un objet. Maintenant, vous pouvez appliquer ::class aux objets, ce qui permet de réduire la taille du code source.
  • Null : Les fonctions internes n’accepteront plus les valeurs nulles pour les arguments non nuls.

La liste complète des nouvelles fonctionnalités du langage PHP 8 est en ligne sur le site officiel de PHP.

Tester PHP 8, la version 8.0 de PHP sur un hébergement web Gandi

Attention aux incompatibilités PHP 8

Comme pour toute montée de versions majeures, celle-ci est venue avec ses cas d’incompatibilités avec les anciennes versions.

Il est évident que l’ancien code est incompatible avec la nouvelle version de PHP 8 ; néanmoins, la majorité des modifications pouvant entraîner des erreurs de compilation ont déjà été corrigées dans les mises à jour PHP 7 (7.2, 7.3 et 7.4).

Voici les changements les plus récents que nous sommes en mesure de citer : Magic quotes legacy, the real type, Reflection export() methods, FILTER_SANITIZE_MAGIC_QUOTES filter, Implode() parameter order mix, array_key_exists() with objects, mb_strrpos() with encoding as 3rd argument, Unbinding $this from non-static closures, hebrevc() function, convert_cyr_string() function, money_format() function, ezmlm_hash() function, allow_url_include ini directive et restore_include_path() function.

Même si les ajustements rétroactifs ne fonctionnent pas, si votre code a été mis à jour fréquemment, en principe, vous ne devriez pas rencontrer de problèmes.

Fin de support de PHP 7.2

L’arrivée de cette nouvelle version PHP 8 signe également la fin de support de la version PHP 7.2 (depuis le 30 novembre 2020). C’est donc le moment de vérifier quelle version de PHP votre site utilise.

S’il s’agit de la version PHP 7.2 ou antérieure, il est temps de planifier une mise à jour vers PHP 8 (en sauvegardant votre site au préalable bien sûr !).

Pour mettre à jour votre version de PHP et passer à PHP 8, une documentation Gandi est disponible.

N.B. : si vous utilisez Prestashop sur votre hébergement Simple Hosting, seule la version PHP 7.3 est compatible avec Prestashop pour le moment.