L’article explique comment configurer Symfony pour l’architecture hexagonale en utilisant l’autowiring, simplifiant ainsi la gestion des dépendances. L’idée principale est d’éviter les configurations XML complexes en exploitant les fonctionnalités modernes de Symfony (autowiring, autoconfigure et un bloc bind minimal), réduisant services.yaml à moins de vingt lignes pour un contexte métier entier. L’auteur illustre cette approche avec une structure de projet claire, où les interfaces (ports) définies dans la couche Domain sont automatiquement liées à leurs implémentations (adaptateurs) dans Infrastructure sans configuration explicite.
L’exemple montre comment une classe d’application comme PlaceOrder dépend uniquement d’interfaces (ex. OrderRepository, Clock, EventBus), laissant Symfony injecter les bonnes implémentations (ex. DoctrineOrderRepository, SystemClock) via l’autowiring. Trois paramètres dans services.yaml (autowire, autoconfigure et public) suffisent pour automatiser cette injection, tandis qu’un attribut PHP 8.3 gère les cas ambigus. L’article souligne que cette méthode élimine le besoin de fichiers de configuration verbeux, tout en respectant les principes de découplage de l’architecture hexagonale.
L'article explore l'utilisation conjointe des modèles de conception "Stratégie" et "Chaîne de Responsabilité" dans le cadre du développement avec Symfony. L'auteur commence par démystifier ces concepts, souvent perçus comme complexes, en illustrant comment ils sont déjà utilisés inconsciemment dans le développement quotidien. Il explique le modèle "Stratégie" à travers un exemple de planification de voyage, où différentes stratégies de transport peuvent être interchangeables selon le contexte. Ensuite, il aborde le modèle "Chaîne de Responsabilité" en décrivant comment les requêtes peuvent être traitées séquentiellement par une série de gestionnaires, chacun ayant la possibilité de traiter ou de transmettre la requête. L'auteur montre comment Symfony facilite l'intégration de ces modèles grâce à des attributs modernes comme AutoconfigureTag et AutowireIterator, permettant une implémentation élégante et maintenable. Enfin, il souligne les avantages de cette combinaison pour créer des applications flexibles, découplées et faciles à étendre.
L'article explore le concept d'injection de dépendance dans Symfony. Il explique comment cette technique permet de simplifier le développement en automatisant la gestion des services, rendant le code plus propre et maintenable. L'auteur compare l'injection de dépendance à un assistant personnel qui apporte tout ce dont vous avez besoin sans effort, soulignant les avantages comme l'autowiring, les services tagués, et la facilité des tests unitaires. Il insiste sur l'importance de déléguer ces tâches à Symfony pour se concentrer sur l'essentiel du développement, tout en assurant une meilleure performance et une réduction des erreurs.
Dynamic Route loading in a non standard Symfony structure | by Anne-Julia Seitz | Aug, 2024 | Medium
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre - attention, à partir de Symfony 7.1
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 montre l'utilisation d'une fonctionnalité de Symfony 4.2+ (les "named autowiring aliases") qui lui a permis de livrer le bundle en titre.
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Une série d'articles très intéressante sur le composant Symfony d'injection de dépendances... 2er article sur la configuration
Une bonne idée (l'injection de dépendances) qui peut se transformer en gros souci si mal utilisée