Les énumérations PHP, bien qu'utiles pour représenter des états internes, ne sont pas nativement conçues pour l'affichage utilisateur et la traduction. Sans une approche structurée, la logique de traduction peut se retrouver dispersée à travers l'application, entraînant des incohérences et des difficultés de maintenance.
Symfony propose une solution élégante via l'interface TranslatableInterface et la classe TranslatableMessage. En implémentant la méthode trans() au sein de vos énumérations, vous centralisez la logique de génération des chaînes traduisibles. Cette approche permet de passer directement les objets énumérés aux filtres de traduction de Twig ou aux labels de formulaires, simplifiant ainsi leur affichage dans la langue de l'utilisateur.
L'avantage principal de cette méthode est la simplification du code. Une fois l'interface implémentée et les clés de traduction définies dans vos fichiers de catalogue, il suffit d'une seule ligne pour obtenir une étiquette traduite, garantissant ainsi une gestion uniforme et maintenable des traductions pour vos énumérations.
Ce billet de blog explique le processus de refactoring de chaînes de caractères en énumérations (enums) dans le code de l'outil d'analyse statique Exakat. Initialement, les chaînes étaient utilisées partout, mais avec l'évolution de PHP, les enums offrent des avantages comme une meilleure typage, une structure dédiée et une analyse plus facile. Bien que les gains de performance ne soient pas significatifs, le passage aux enums simplifie l'analyse statique et améliore la précision. L'article détaille le choix des noms d'atomes comme candidats idéaux pour ce refactoring, en conservant la convention de nommage existante.
PHP 8.1 apporte des améliorations significatives pour rendre le code plus sûr et élégant. Parmi les nouveautés, les enums natifs permettent des vérifications de type robustes et des fonctionnalités avancées comme des méthodes et de la logique métier. Les propriétés readonly simplifient l'immutabilité en permettant une assignation unique dans le constructeur, combinée à la promotion de propriétés pour un code concis. Ces évolutions illustrent l'affinement continu du langage.
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
L'auteur compare 2 composants qui permettent la mise en place d'enums