Annoncée comme une mise à jour majeure du langage de script populaire pour le développement web, PHP 8.1 s’enrichit de nombreuses capacités, depuis les enums ou énumérations et les propriétés en lecture seule readonly, jusqu’à la syntaxe appelable de première classe. Les enums, ou énumérations, permettent aux développeurs de définir un type personnalisé, limité à un nombre discret de valeurs possibles. Cette caractéristique peut s’avérer utile lors de la définition d'un modèle de domaine en « rendant les états invalides non représentables », comme l’explique la documentation de PHP. Dans le langage PHP, les cas d'enum sont des objets valides utilisables partout où un objet peut être utilisé, y compris les contrôles de type.

Parmi les autres fonctionnalités et améliorations apportées par PHP 8.1, on peut citer :

- Les « Fibers » fournissent des primitives permettant d’implémenter une concurrence légère.

- Avec la syntaxe appelable de première classe, les fermetures pour les appelables peuvent être créées en utilisant la syntaxe myfunc(...), qui est identique à Closure::fromCallable('myFunc').

- Le modificateur de propriété readonly empêche la modification d'une propriété après l'initialisation.

- Les performances ont été améliorées grâce à un compilateur JIT (Just in Time) pour ARM64, à opache appelé aussi « Inheritance cache », une résolution rapide des noms de classe et des améliorations apportées aux itérateurs du système de fichiers de la bibliothèque standard.

- Avec les initialisateurs (Initializer), il est désormais possible d’utiliser les objets comme valeurs de paramètres par défaut, variables statiques et constantes globales, en plus de leur utilisation possible dans les arguments d'attributs. Cela permet effectivement d'utiliser des attributs imbriqués.

- Les types d'intersection peuvent être utilisés quand une valeur doit satisfaire plusieurs contraintes de type simultanément.

- Les développeurs peuvent déclarer des constantes de classe finales, afin qu'elles ne puissent pas être remplacées par des classes filles.

- Il est désormais possible d'écrire des nombres octaux avec le préfixe explicite 0o.

- Un type de retour never indique que la fonction ne retourne pas de valeur.

- Les tableaux peuvent être dépaquetés avec des clés string.

- De nouvelles classes, fonctions et interfaces ont été introduites, y compris un attribut pour #[ReturnTypeWillChange].

- Le passage de null aux paramètres internes des fonctions non-variables est déprécié.

PHP 8.1 arrivé quasiment un an après la sortie de la version PHP 8.0, qui offrait des fonctionnalités comme les types d'union 2.0 et la compilation JIT. Autre nouveauté à signaler, la formation de la PHP Foundation, une organisation à but non lucratif destinée à assurer la longévité et la prospérité de PHP. La fondation compte notamment parmi ses membres JetBrains et Zend. Les participants feront des dons pour couvrir les salaires des principaux développeurs de PHP.

Le code source et les binaires Windows de PHP 8.1 sont téléchargeables sur php.net.