Cet article de Matt Mochalkin sur Medium explore l'utilisation des Property Hooks et de l'Asymmetric Visibility introduits avec PHP 8.4 et Symfony 7.4 pour moderniser les applications Symfony. Il montre comment ces nouvelles fonctionnalités permettent de supprimer les getters et setters boilerplate, tout en maintenant une bonne encapsulation et une intégration transparente avec Doctrine ORM, le Serializer, le Validator et les Forms de Symfony. L'auteur illustre ces concepts avec des exemples concrets de refactorisation d'entités Doctrine en entités modernes et concises.
PHP 8.4, sorti en novembre 2024, introduit plusieurs fonctionnalités majeures pour rattraper des retards de conception. Les Property Hooks permettent de définir des getters et setters directement sur les propriétés, simplifiant le code. La visibilité asymétrique offre une meilleure protection des propriétés en lecture/écriture. D'autres améliorations incluent l'instanciation sans parenthèses, des fonctions de tableaux pratiques comme array_find(), array_any(), et array_all(), ainsi qu'un parser HTML5 natif. Ces évolutions, bien que tardives, modernisent significativement le langage.
PHP 8.4 et Doctrine 3.4 révolutionnent la gestion des propriétés avec les Property Hooks : fini les centaines de lignes de getters/setters ! Désormais, il est possible d’intégrer directement la logique d’accès et de modification dans la déclaration des propriétés, réduisant drastiquement le code boilerplate (jusqu’à -60%). Par exemple, au lieu d’écrire des méthodes getName() et setName(), on utilise une syntaxe élégante comme public string $name { get => strtoupper($this->name); set => $this->name = trim($value); }. Doctrine 3.4 supporte officiellement cette fonctionnalité, simplifiant ainsi les entités et améliorant la lisibilité. La migration, bien que bénéfique (moins de code, meilleure maintenance), demande une adaptation du code existant et des tests rigoureux. Une avancée majeure pour le PHP moderne, même si certains outils ou habitudes mettent du temps à s’adapter.
Les "property hooks" sont apparus en PHP 8.4.
L'auteur explique en quoi ça consiste, et il montre tout au long de l'article comment il s'en sert. C'est très intéressant, notamment sur les interfaces !