PHP中的多个DI容器?

时间:2011-02-20 01:01:20

标签: php model-view-controller dependency-injection

我正在考虑在PHP中构建的MVC应用程序中重构一些代码以使用依赖注入容器。

我目前正在研究Symfony DI组件,它看起来非常好。我理解DI和DI容器的基础知识,但是在整个应用程序中我是使用1个全局容器还是多个容器?<​​/ p>

例如,假设我有: “User”类需要依赖项:“ActiveRecord”和“Sessions” “SiteStatistics”类需要依赖项:“ActiveRecord”和“Sessions”

User和SiteStatistic对象应该放在不同的容器中吗?或者我应该有一个包含我需要创建的所有内容的全局容器吗?

谢谢:)

1 个答案:

答案 0 :(得分:2)

DI容器的优点在于您可以定义依赖关系,容器为您提供具有所有依赖关系(及其依赖关系等)的对象。放置在容器中的对象越多,可以将这些对象一起使用而不在其中一个对象中调用“new”的概率更高。

所以 - 如果User的“Sessions”对象和SiteStatistics的“Sessions”对象相同,那么一定只使用一个容器。如果它们不同,仍然使用一个容器,但在配置依赖项时为每个会话对象使用不同的标识符。

如果您正在寻找将Site会话数据与SiteStatistics数据隔离的方法,我认为DI容器是错误的。