PHP 8.4 est sorti : ce qui a changé et pourquoi c'est important
La communauté des développeurs a accueilli la version tant attendue de PHP 8.4 — une nouvelle version majeure de l'un des langages de programmation web les plus populaires. Cette mise à jour apporte un certain nombre d'améliorations significatives, notamment les très attendus property hooks, la visibilité asymétrique et une optimisation substantielle des performances. Analysons les changements clés que tout développeur PHP devrait connaître.
1. Property Hooks (Hooks de propriétés)
La nouveauté la plus marquante est la possibilité de définir des getters et des setters directement dans la déclaration d'une propriété de classe, sans écrire de méthodes séparées. Cela simplifie radicalement le travail avec les champs calculés ou validés.
class User{ public string $name { set => $this->name = trim($value); get => ucfirst($this->name); }}Auparavant, une telle logique nécessitait d'écrire des méthodes séparées getName() et setName(). Les property hooks rendent le code plus propre et plus lisible.
2. Visibilité asymétrique
Il est désormais possible de définir différents niveaux d'accès pour la lecture et l'écriture d'une propriété. Par exemple, une lecture publique mais une écriture protégée :
class Post{ public private(set) string $title;}Cela évite d'avoir à créer des getters et des setters uniquement pour le contrôle d'accès, tout en préservant l'encapsulation.
3. JIT amélioré et performances
Dans PHP 8.4, le compilateur JIT (Just-In-Time) a été considérablement retravaillé. Les développeurs du noyau ont amélioré l'heuristique de prise de décision concernant la compilation et réduit les frais généraux lors de l'exécution des chemins de code chauds. Selon les tests préliminaires, le gain de performances dans les benchmarks synthétiques est de 10 % à 25 % par rapport à PHP 8.3.
- Accélération des boucles et des fonctions récursives
- Traitement amélioré des grands tableaux
- Réduction de la consommation mémoire en mode JIT jusqu'à 15 %
4. Nouvelle syntaxe : déstructuration de tableaux avec types
Ajout de la possibilité de spécifier des types lors de la déstructuration de tableaux :
[$name, $age] = ['Иван', 30]; // avant[ string $name, int $age ] = ['Иван', 30]; // aprèsCela améliore l'analyse statique et rend le code auto-documenté.
5. Changements dans la bibliothèque standard
- Nouvelles fonctions :
array_find(),array_find_key(),array_any()etarray_all()— pour un travail plus concis avec les tableaux. - Mise à jour de PCRE2 : la bibliothèque d'expressions régulières a été mise à jour vers la version 10.44, corrigeant plusieurs erreurs rares.
- Fonctions obsolètes :
session_set_cookie_params()(au profit deini_set()) et plusieurs fonctions internes ont été déclarées obsolètes.
6. Statut d'obsolescence (Deprecations)
Dans PHP 8.4, les éléments suivants sont marqués comme obsolètes :
- Modification du type de retour via
#[\\ReturnTypeWillChange]— une déclaration explicite est désormais requise. - Appel de
isset()sur des non-tableaux (par exemple