Retour au Blog

PHP8 et ses nouveautés

PHP8 et ses nouveautés

La mise à jour PHP 8 a été rendue disponible en novembre 2020. Qui dit nouvelle mise à jour dit nouvelles fonctionnalités. Cette nouvelle version apporte son lot de nouvelles fonctionnalités.

Découvrez PHP 8 !

Le compilateur JIT

Le compilateur Just In Time est la principale évolution relative à PHP 8. Il va permettre de produire une amélioration des performances en vitesse. Si PHP est à l'origine un langage interprété, l'introduction de compilateurs JIT permet de compiler certaines parties du code pendant son exécution pour le conserver en cache. Cela permet des gains de vitesse d'exécution non négligeables pour certaines applications web.

Les types d'union 2.0

Les types Union sont une collection de deux ou plusieurs types qui indiquent que l'un ou l'autre peut être utilisé et permettent de définir des types à choix multiples. Le seul type qui ne peut pas faire partie d'un type Union est le type "voide" puisqu'il n'indique aucune valeur de retour.

Les Weakmaps

Cette fonctionnalité permet d'économiser des ressources lors de la manipulation des objets.Les Weakmaps contiennent des références à des objets, ce qui n'empêche pas ces objets d'être gérés par le garbage collector.

La fonction fdiv

Elle fait quelque chose de semblable aux fonctions fmod et intdiv, qui permettent une division par 0. Au lieu d'erreurs, vous obtiendrez INF, -INF ou NAN, selon le cas.

Créer des objets DatTime à partir de l'interface

Avec PHP 8 il est désormais possible de convertir les objets DateTime à partir d'un objet DateTimeImmutable l'un vers l'autre grâce à l’ajout de la méthode CreateFromInterface

Les versions précédentes de PHP permettaient déjà de créer un objet DateTime à partir d'un objet DateTimeImmuable mais l'inverse n'était pas encore possible.

Exemple de mise en place :

$now = new DateTime();

// DateTime to DateTimeImmutable
$nowImmutable = DateTimeImmutable::createFromInterface($now);

// DateTimeImmutable to DateTime
$anotherNow = DateTime::createFromInterface($nowImmutable);

Avertissements et avis :

Sous les autres versions de PHP, la plupart des erreurs déclenchaient uniquement des avertissements ou des avis. Depuis PHP 8, elles se sont converties en erreurs correctes.

Tous ces avertissements ont été modifiés :

  • variable indéfinie : déclenche une erreur d'exception au lieu d'un avis ;
  • indice de tableau indéfini : déclenche un avertissement au lieu d'avis ;
  • Tentative d'incrémentation/diminution de la propriété “%s” d’un non-objet : déclenche une erreur d’exception au lieu d’un avertissement ;
  • tentative de modification de la propriété “%s” d’un non-objet : déclenche une erreur d’exception au lieu d'avertissement ;
  • tentative d'attribution de propriété “%s” d’un non-objet : déclenche une erreur d’exception au lieu d'un avertissement ;
  • création d'un objet par défaut à partir d'une valeur vide : déclenche une erreur d’exception au lieu d'un avertissement ;
  • impossible d'ajouter un élément au tableau, car l'élément suivant est déjà occupé : déclenche une erreur d’exception au lieu d'un avertissement ;
  • ne peut pas annuler le décalage d'une variable qui n'est pas un tableau : déclenche une erreur d’exception au lieu d'un avertissement ;
  • ne peut pas utiliser une valeur scalaire comme tableau : déclenche une erreur d’exception au lieu d'un avertissement.

Quelle sera la suite pour PHP ?

Cécile Helary Hamerel, la présidente de l’AFUP a déclaré que PHP 9 n’était pas prévu pour le moment. Cependant, il est annoncé une succession de versions de PHP 8. Les futures améliorations devraient notamment porter sur la cohérence du langage.

À présent, vous avez toutes les clés pour bien saisir le fonctionnement de PHP 8.

Si vous voulez savoir comment configurer PHP sur Docker dans Windows 10 c’est par ici.

Enfin, PHP ce n'est pas qu'un langage, c'est aussi une communauté... et désormais une fondation ! Cette dernière a été annoncée suite au départ d'un des principaux développeurs du langage et aura pour but d'assurer la pérennité de PHP.

Contactez-nous !
Je veux en savoir plus !