Enfin, PHP8.1 est sorti ! ! ! Voir l'annonce officielle de PHP pour plus de détails : https://www.php.net/releases/8.1/en.php
PHP 8.1.0 est sorti, cette version apporte de nombreuses améliorations et nouvelles fonctionnalités.
Énumérations
Utilisez une énumération au lieu d'un ensemble de constantes et validez instantanément.
Propriétés en lecture seule
Les propriétés en lecture seule ne peuvent pas être modifiées après l'initialisation, c'est-à-dire après qu'une valeur leur ait été attribuée. Ils peuvent être utilisés pour modéliser des objets de valeur et des objets de transfert de données.
Syntaxe appelable de première classe
Vous pouvez désormais obtenir une référence à n'importe quelle fonction.
Nouveau initialiseur
les objets peuvent désormais être utilisés comme valeurs de paramètres par défaut, variables statiques et constantes globales, ainsi que comme paramètres de propriété, permettant ainsi d'utiliser des propriétés imbriquées.
Type d'intersection pure
Lorsqu'une valeur doit satisfaire plusieurs contraintes de type en même temps, utilisez le type d'intersection. Notez qu'il n'est actuellement pas possible de mélanger les types d'intersection et d'union, tels que A&B|C.
Never return type
Une fonction ou une méthode déclarée avec never type signifie qu'elle ne retournera pas de valeur et lancera une exception ou en appelant die(), exit(), trigger_error() ou similaire à terminer l'exécution du script.
Constantes de classe finale
Les constantes de classe finales peuvent être déclarées pour éviter qu'elles ne soient remplacées dans les sous-classes.
Représentation explicite des nombres octaux
Il est désormais possible d'écrire des nombres octaux en utilisant un préfixe 0o explicite.
Fibers
Les fibres sont des primitives permettant d'implémenter une concurrence concurrente coopérative légère. Ils constituent un moyen de créer des blocs de code qui peuvent être mis en pause et repris comme des générateurs, mais depuis n'importe où dans la pile. Les fibres elles-mêmes n'assurent pas la concurrence, une boucle d'événements est toujours requise. Cependant, ils permettent de partager la même API via des implémentations bloquantes et non bloquantes. Les fibres permettent de se débarrasser du code passe-partout précédemment vu dans Promise::then() ou des coroutines basées sur un générateur. Les bibliothèques construisent souvent d'autres abstractions autour de Fiber, il n'est donc pas nécessaire d'interagir directement avec elles.
Prise en charge du déballage des tableaux pour les tableaux à clé de chaîne
PHP prenait auparavant en charge le déballage à l'intérieur des tableaux via l'opérateur spread, mais uniquement si le tableau avait des clés entières. Les tableaux peuvent désormais également être décompressés à l'aide de clés de chaîne.
Optimisation des performances
PHP 8.1 présente également quelques changements en termes de performances, notamment :
Backend JIT pour ARM64 (AArch64)
Mise en cache de l'héritage (pour éviter de relier les classes dans chaque demande) )
Résolution rapide du nom de classe (en évitant les recherches de minuscules et de hachage)
améliorations des performances de timelib et ext/date
améliorations de l'itérateur du système de fichiers SPL
optimisation de la sérialisation/désérialisation
Quelques optimisations de fonctions internes (get_declared_classes(), explosive(), strtr(), strnatcmp(), dechex())
Améliorations et correctifs JIT