Publiée le 23 novembre, cette mise à jour majeure du langage de script web côté serveur, accessible à partir de php.net, offre des fonctionnalités comme le typage explicite des constantes de classe, le clonage profond des propriétés en lecture seule, et des ajouts à la fonctionnalité aléatoire. Avec les constantes de classe typées, PHP 8.3 supporte la déclaration des constantes de classe, d'interface, de trait et d'enum. Les déclarations de constantes de classe supportent toutes les déclarations de type supportées par PHP, à l'exception des types void, callable et never. Les types void et callable ne sont pas supportés en raison de problèmes discutés dans la « Request for Comments » (RFC) sur les propriétés typées v2. De même, never n'est pas applicable dans le contexte des constantes.

Pour rendre possible un clonage profond des propriétés en lecture seule readonly, PHP 8.3 permet aux propriétés en lecture seule readonly d'être modifiées une seule fois dans la méthode magic __clone. De plus, les classes en lecture seule readonly peuvent maintenant être réinitialisées pendant le clonage. PHP 8.3 permet également aux classes non-readonly d'étendre les classes en lecture seule readonly.

D’autres fonctionnalités

Parmi les autres fonctionnalités et améliorations de PHP 8.3, on peut citer :

- Un nouvel attribut [#\Override] exprime l'intention dans le code. Si cet attribut est ajouté à une méthode, le moteur doit vérifier qu'une méthode portant le même nom existe dans une classe parente ou dans l'une des interfaces implémentées. Si une telle méthode n'existe pas, une erreur de compilation est émise.

- Le linter de ligne de commande accepte désormais des entrées variables pour les noms de fichiers à lister.

- L'extension Random introduite dans PHP 8.2 ajoute une nouvelle méthode qui génère des chaînes aléatoires composées uniquement d'octets spécifiques. Cette méthode permet aux développeurs de générer facilement des identifiants aléatoires, tels que des noms de domaine, et des chaînes numériques de longueur arbitraire.

- Une nouvelle fonction, json_validate(), indique si une chaîne contient du JSON valide.

- Les classes anonymes peuvent à présent être en lecture seule readonly.

Cette version PHP 8.3 succède à la version PHP 8.2 publiée en décembre dernier, qui introduisait les classes en lecture seule readonly.