Une meilleure architecture ADR pour vos contrôleurs Symfony

Publié le 01/11/2024 • Actualisé le 01/11/2024

Cet article montre différentes expériences et essais autour de l’architecture ADR appliquée aux contrôleurs Symfony. C’est parti ! 😎

Prérequis

Je présumerai que vous avez les connaissances élémentaires de Symfony et que vous savez ce qu’est un contrôleur.

Introduction

Dans l’article de blog « Une semaine de Symfony » #923, un sujet essentiel a été abordé : l’utilisation de la FQCN des contrôleurs comme nom de route.

But

Cet article présente des idées intéressantes à tester dans un projet Symfony. MicroSymfony est un modèle d’application Symfony intégrant déjà le pattern ADR.

L’architecture ADR

ADR signifie « Action Domain Responder » et peut être mis en œuvre dans Symfony à l’aide de contrôleurs invocables.

POC : utilisation de la FQCN du contrôleur comme nom de route

Dans la documentation, la route est une chaîne fixe. Pour éviter des conventions variées entre développeurs, il est proposé d’utiliser la FQCN self::class comme nom de route.

POC : utilisation de la FQCN du contrôleur comme nom et chemin de template Twig

Lors de la création d’un contrôleur, il est possible d’utiliser la FQCN pour rendre un template Twig. Cela nécessite toutefois de modifier le chemin du template dans le projet.

POC : utilisation de la FQCN du contrôleur comme chemin de route

Dans l’attribut #Route, il est possible de remplacer des chaînes fixes par la FQCN de la classe, bien que cela puisse engendrer des URLs peu esthétiques.

Testez par vous-même !

Vous pouvez tester tout ceci en moins d’une minute ; lancez (composer et le binaire Symfony sont requis) :

Conclusion

Cette architecture est utilisée dans le projet MicroSymfony. Des améliorations sont encore à explorer pour des projets plus importants.

  GitHub   Lire la doc   Lire la doc  Plus sur le web

Merci à ceux qui ont contribué à cet article, notamment à BernardNgandu.

  Travaillez avec moi !


Source

Comments

No comments yet. Why don’t you start the discussion?

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *