正确使用依赖注入容器

时间:2015-02-05 21:00:55

标签: php oop web-frameworks

那么依赖注入呢。我理解概念(我认为!)和容器的使用。我无法理解的是让DI容器随处可用的最佳方法。

如果您有DB类,是否将容器注入构造函数?那么你可以调用DI容器方法来创建依赖对象吗?

您是否对配置类,邮件程序类,记录器类等执行相同的操作?你如何让DI容器随处可用?

帮助表示感谢!

2 个答案:

答案 0 :(得分:3)

类似于CJD所说的,如果你的DIC可以无处不在那么它就更像是Global Registry

对于DB类,如果它的依赖关系是通过提示参数的类型,外部定义,文档或任何其他可接受的方式来传递的,那么DIC可以注入这些依赖关系。

有用的资源:

Anthony Ferra / ircmaxell video on Dependency Injection

Fabian Potencier article about whether you need a DIC

罗布艾伦 video Introducing Dependency Injection

Stephan Hochdorfer video The 7 Deadly Sins of Dependency Injection

Martin Fowler:

StackOverflow的:

答案 1 :(得分:1)

我的理解是,你让它随处可用。您注册所有对象及其依赖项,然后在构造对象时,IoC容器提供其所有依赖项(以及第二级,第三级,第n级依赖项)。

所以foo需要bar,bar需要baz和qux,而qux需要quux。 Foo只需要注入条形图,IoC将负责提供条形图及其依赖项的细节,等等。

如果foo之后需要制作更多的条形图,那么它依赖于条形工厂,而IoC也可以提供它。