PHP 8.2 est une étape clé dans la modernisation du langage PHP. En plus des nouvelles fonctionnalités et des améliorations, PHP 8.2 rationalise le langage en supprimant le support des propriétés de classes dynamiques, les avertissements lorsqu'il rencontre certaines valeurs de configuration INI non optimales, et en corrigeant certains comportements hérités de PHP qui affectent la façon dont PHP trie les tableaux et certains types d'opérations de transformation/encodage de chaînes de caractères.
source : https://php.watch/articles/PHP-8.2
> Nouvelles fonctionnalités :
- Améliorations des types du système :
PHP 8.2 corrige plusieurs lacunes et restrictions du système de type de PHP, permettant aux applications PHP de bénéficier d'une meilleure sécurité de type.
Ceci inclut l'ajout du support des types true, l'utilisation des types null et false comme types autonomes, et le support des types DNF.
DNF (Disjoint Normal Form) : Il est maintenant possible de combiner les types Union (PHP 8.0) et Intersection (PHP 8.1), ce qui permet de déclarer des types de paramètres, de retours et de propriétés précis et expressifs.
Exemple :
Il est possible de retourner directement le type true ou false en remplacement du type bool si la valeur du booléen est invariant.
- Les classes readonly :
PHP 8.1 a ajouté le support des propriétés en lecture seule. Une propriété readonly ne peut être définie qu'une seule fois, et PHP empêche activement la valeur d'être modifiée, même à l'intérieur de la classe.
PHP 8.2 va encore plus loin avec les classes readonly. Lorsqu'une classe est déclarée en lecture seule, toutes ses propriétés sont automatiquement déclarées en lecture seule. De plus, il empêche les propriétés dynamiques sur les classes readonly, et s'assure que toutes les propriétés sont typées.
- Nouvelle extension random :
Cette nouvelle extension ne casse pas l’existant, la scalabilité est assurée, elle apporte plus de faciliter pour mocker le Ramdon Number Generator via une architecture pluggable.
- Constantes dans les traits :
En PHP 8.2, il est maintenant possible de déclarer des constantes dans des traits. Les traits ne sont pas accessibles directement, mais ces constantes deviennent des constantes de classe lorsqu'une classe utilise le trait.
- Support d’écriture des valeurs de paramètre sensible :
PHP 8.2 ajoute un nouvel attribut de paramètre nommé #[\SensitiveParameter] pour que PHP s'assure d'expurger la valeur réelle dans les traces de pile et les messages d'erreur.Les fonctions qui acceptent des mots de passe, des clés privées, ou d'autres informations sensibles peuvent déclarer les paramètres avec l'attribut #[\SensitiveParameter].
Si la fonction appelée provoque une erreur PHP ou une exception, la valeur réelle passée à ce paramètre sera remplacée par un objet \SensitiveparameterValue.
Exemple :
> Nouvelles fonctions et classes :
- Maintenir une connexion Curl en vie : curl_upkeep :
La fonction curl_upkeep de l'extension Curl de PHP 8.2 déclenche la bibliothèque Curl sous-jacente pour exécuter les tâches nécessaires au maintien en vie d'une connexion Curl.
Le cas d'utilisation le plus courant de cette fonction est de maintenir une connexion HTTP persistante (Keep-Alive) en appelant périodiquement la fonction curl_upkeep.
- Réinitialiser le pic d'utilisation de la mémoire : memory_reset_peak_usage :
PHP 8.2 ajoute une nouvelle fonction nommée memory_reset_peak_usage qui réinitialise le pic d'utilisation de la mémoire retourné par la fonction memory_get_peak_usage.
Cela peut être utile dans les applications qui invoquent ou itèrent une action plusieurs fois, et qui ont besoin d'enregistrer le pic d'utilisation de la mémoire pour chaque invocation.
Sans la possibilité de réinitialiser l'utilisation de la mémoire avec la nouvelle fonction memory_reset_peak_usage, la fonction memory_get_peak_usage renvoie le pic absolu d'utilisation de la mémoire pendant toute ladurée de l'exécution.
> Dépréciation en PHP 8.2 :
- Les propriétés dynamiques sont obsolètes :
L'une des dépréciations les plus notables de PHP 8.2 est la dépréciation des propriétés de classe qui sont déclarées dynamiquement.
Exemple :
Il y a une option de retrait, mais l'approche recommandée est de déclarer les propriétés de classe dans la déclaration de classe, de préférence avec une déclaration de type également.
- ${var} Interpolation de la chaîne de caractères dépréciés :
PHP a toujours supporté l'interpolation de variables avec le motif "foo {$bar}", et avec une syntaxe alternative où le signe du dollar est placé à l'extérieur des accolades (par exemple, "foo ${bar}").
En PHP 8.2, la syntaxe alternative qui consiste à placer le signe du dollar à l'extérieur des accolades est dépréciée.