Voici ce que je sais à ce jour:Comment utiliser un conteneur IoC ?? Je ne comprends pas
DI me permet de construire réutilisables, unité testable composants
DI est bavard car il faut que je définir explicitement les dépendances (via le constructeur ou la méthode, je ne comprends toujours pas l'injection d'interface). C'est pourquoi un conteneur ou un localisateur de service est nécessaire. Le conteneur est meilleur que le localisateur de service parce que les classes n'auront pas besoin d'être conscientes de l'existence de celui-ci.
Mais je trouve ces problèmes:
Certaines classes sont maintenant dépendra du conteneur? Si je n'utilise pas la configuration par défaut pour chaque classe, comme décrit dans mon fichier de services, certaines classes devront appeler le conteneur pour reconfigurer l'objet nécessaire. Sur la page 79 de cette diapositive http://www.slideshare.net/fabpot/dependency-injection-with-php-53, Fabien Potencier a déclaré qu'un conteneur ne gère pas tous les objets, mais uniquement ceux avec une instance unique (mais pas des singletons). Je suis encore plus confus maintenant.
Toute aide est grandement appréciée. =)
Si elles ne dépendent pas du conteneur, alors comment créent-elles des enfants avec des configurations autres que celles par défaut (ex: paramètres définis à l'exécution)? – HappyDeveloper
@HappyDeveloper: c'est le conteneur qui fait tout le câblage et la configuration. Les classes individuelles * reçoivent * les dépendances et la configuration. –
Oui, je sais, mais cela ne fonctionne que pour la création d'objets par défaut. Que se passe-t-il si, à un moment donné de l'exécution du programme (à l'intérieur de la méthode de l'enfant d'un enfant), j'ai besoin de dire une dépendance DB_Cache au lieu de File_Cache? J'ai besoin d'appeler le conteneur – HappyDeveloper