如何使用IoC容器?我不明白

时间:2010-10-16 01:34:21

标签: oop dependency-injection ioc-container

这是我目前所知道的:

  • DI让我可以构建可重复使用的,可单元测试的组件

  • DI很冗长,因为它要求我明确设置依赖项(通过构造函数或方法。虽然我仍然不理解接口注入)。这就是需要容器或服务定位器的原因。

  • 容器优于服务定位器,因为类不需要知道它的存在。

但我发现了这些问题:

  • 现在有些类会依赖Container吗?如果我没有为每个类使用默认配置,如我的服务文件中所述,某些类需要调用容器来重新配置所需的对象。

  • 在此幻灯片http://www.slideshare.net/fabpot/dependency-injection-with-php-53的第79页上,Fabien Potencier说Container不管理所有对象,只管理那些具有单个实例(但不是单例)的对象。我现在更加困惑。

非常感谢任何帮助。 =)

1 个答案:

答案 0 :(得分:0)

  

某些类现在将依赖于Container?

没有。这就是你使用依赖注入而不是服务位置的原因。

  

从此幻灯片第79页开始......

见第82页,它说“与模型对象不同”。老实说,我从来没有像那样解释它(“只有一个实例的对象(!= Singletons)”或者是错误的或者非常特定于PHP的东西,它一般不适用于依赖注入或IoC + DI容器),但是我打赌他试图解释的是容器通常管理类似服务的东西,而不是类似模型的东西。