46 liens privés
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.
Les façades de service offrent une alternative à l'injection de dépendances traditionnelle dans Symfony, particulièrement utile pour les utilitaires comme les loggers ou les rapports d'erreurs, où elles simplifient le code et réduisent les instanciations inutiles. Elles sont également efficaces pour les objets paresseux et les situations où l'inversion de contrôle (IoC) est impossible, comme l'instanciation manuelle de classes ou l'utilisation de bibliothèques externes qui ne supportent pas l'IoC.
Les développeurs Symfony sont souvent réticents à l'idée d'utiliser des façades de service, les confondant avec des classes statiques et craignant qu'elles introduisent un état global. Cependant, les façades de service sont en réalité une forme d'injection de dépendances, offrant flexibilité et personnalisation sans ajouter de dépendance supplémentaire au conteneur de services. Elles permettent aux classes d'appeler dynamiquement des services lorsqu'elles en ont besoin, tout en restant liées au framework utilisé.
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 - ça peut être pratique quand on a plusieurs instances de la même interface à injecter. L'exemple choisi ici est celui du cache : cache via le système de fichiers, cache via Redis, etc.
Tout est dans le titre
Tout est dans le titre
Cet article fait partie de ceux listés dans https://schlitt.info/blog/0784_best_of_posts_for_engineers.html
L'auteur donne plusieurs règles de son équipe, qui doivent être respectées dans le code (utilisation d'exceptions, DTO, etc.) Elles méritent d'être connues
Cet article fait partie de ceux listés dans https://schlitt.info/blog/0784_best_of_posts_for_engineers.html
L'auteur explique pourquoi il faut se débarrasser des appels statiques (classes difficilement testables unitairement) et comment faire (injection de dépendances)
Cet article fait partie de ceux listés dans https://schlitt.info/blog/0784_best_of_posts_for_engineers.html
L'auteur fait la distinction entre newables, des objets chargés d'un état, et les injectables, des objets accomplissant les tâches.
Les bonnes pratiques qu'il défend sont :
- les newables ne doivent pas dépendre d'injectables
- les injectables ne doivent pas inclure de newables dans leurs attributs.
Si ces 2 règles ne sont pas suivies, des effets de bord peuvent avoir lieu.
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 du TaggedLocator via un exemple simple et explique en quoi c'est plus approprié que la ServiceSubscriberInterface.
Un service Symfony a besoin d'un autre service, mais ce besoin varie selon le contexte d'exécution. L'auteur montre l'utilisation des tags pour injecter automatiquement tous les services utilisés.