PHP 8.3 est sorti, découvrez les nouveautés pour le langage
La version stable de PHP 8.3 sort ce jeudi 23 novembre. On fait le point sur les nouvelles fonctionnalités et changements embarqués, mais également sur les éléments dépréciés.
Chaque fin d'année, le projet PHP a pour habitude de déployer une version majeure ou mineure pour PHP.
D'un point de vue "high level", il n'y a pas d'énorme additions dans cette nouvelle release du langage, qui a soufflé sa 28ème bougie cette année, contrairement à ce qu'on a pu connaître avec les versions PHP 8.1 et 8.2.
Cette nouvelle version se concentre plutôt sur un nettoyage de printemps anticipé dans le langage et vise à rendre certaines features cohérentes avec la manière dont a évolué PHP ces dernières années.
Ajout de la fonction json_validate
PHP 8.3 introduit une nouvelle fonction clé en main json_validate, pour permettre la vérification de validité de chaînes JSON.
Cela était possible avant avec json_decode, mais impliquait une petite implémentation, cette nouvelle fonction, plus performante et moins gourmande en ressources, est donc la bienvenue.

Évolution des constantes
Grande nouvelle : avec PHP 8.3, les constantes peuvent désormais être typées, ce qui devrait contribuer à améliorer la clarté du code PHP.
De même, il est désormais possible d'accéder aux constantes de façon dynamique.

3 nouvelles méthodes Randomizer
La classe Randomizer introduite avec PHP 8.2 bénéficie de 3 nouvelles méthodes avec PHP 8.3 :
getBytesFromString(): permet de prendre au hasard x caractères présents dans une chaîne (x étant fourni en entrée)getFloat(): permet de générer un float aléatoire entre 2 nombres donnés (minimum et maximum)nextFloat(): même principe quegetFloat, mais renvoie toujours un float compris entre 0 et 1 (cette fonction n'attend pas de paramètre)
Attribut override
Un nouvel attribut #[\Override] permet d'indiquer qu'une méthode va remplacer (écraser) la méthode parente.
Lorsque cet attribut est présent, le moteur PHP vérifiera si la méthode concernée existe bien dans la classe parente, et générera une erreur si ce n'est pas le cas.
Ce genre de fonctionnalité est très appréciable car elle permet de se prémunir d'erreurs lorsque le code est amené à évoluer.
Autres améliorations et éléments dépréciés
Parmi les autres changement apportés au langage par cette nouvelle version, on notera :
- La possibilité de réinitialiser les propriétés en lecture seule (readonly) dans les situations de duplication (clonage)
- Des messages d'erreur plus complets pour les différentes exceptions pouvant être levées par les classes Date et Time
- Une amélioration de la gestion des erreurs de la fonction unserialize()
- Les paramètres INI
assert.active,assert.bail,assert.callback,assert.exceptionetassert.warningdeviennent dépréciés - L'appel aux fonctions
get_class()etget_parent_class()sans argument est déprécié
Pour plus de détails sur PHP 8.3, vous pouvez consulter sa page de release officielle.
À propos de l'auteur
Nicolas Lecointre
Chief Happiness Officer des développeurs, ceinture noire de sudo. Pour rire, j'ai créé Les Joies du Code. J'utilise Vim depuis 10 ans parce que je sais pas comment le quitter.
À lire également
Ma phobie administrative a enfin trouvé son fix, et il s’appelle Abby
Je DÉTESTE, je HAIS l'administratif. Voilà, c'est dit, et ça me semble être une belle entrée en matière pour cet article. C’est assez simple, à mon niveau, tout ce qui...
Articles similaires
Java 23 vient de sortir, mais à quoi sert encore ce langage aujourd’hui ?
Advent of Code 2023 : un calendrier de l'avent pas comme les autres pour les développeurs
Il n’a pas fait suivre le message à 15 de ses amis, maintenant Facebook est payant
Java 23 vient de sortir, mais à quoi sert encore ce langage aujourd’hui ?
Advent of Code 2023 : un calendrier de l'avent pas comme les autres pour les développeurs
10 bonnes raisons de se lancer sur PHP en 2025 en tant que développeur
Il n’a pas fait suivre le message à 15 de ses amis, maintenant Facebook est payant
Plus de contenu
Quand je dis au chef qu'on n'arrivera jamais à tenir la deadline imposée
Quand je termine le projet dans les temps après passé un mois de rush
TCHOU TCHOU
Merci.
Quand je réalise que je viens de balancer mon fichier d'imports tests en base de prod
Quand on retire une bibliothèque qu'on pensait inutile
Quand je ne parviens pas à reproduire un bug laissé de côté vendredi le lundi matin
Quand je me rends compte qu'une nouvelle personne s'est installée dans l'open space
Quand je dis au chef qu'on n'arrivera jamais à tenir la deadline imposée
Quand je termine le projet dans les temps après passé un mois de rush
TCHOU TCHOU
Merci.
Quand je réalise que je viens de balancer mon fichier d'imports tests en base de prod
