我正在考虑在PHP中构建的MVC应用程序中重构一些代码以使用依赖注入容器。
我目前正在研究Symfony DI组件,它看起来非常好。我理解DI和DI容器的基础知识,但是在整个应用程序中我是使用1个全局容器还是多个容器?</ p>
例如,假设我有: “User”类需要依赖项:“ActiveRecord”和“Sessions” “SiteStatistics”类需要依赖项:“ActiveRecord”和“Sessions”
User和SiteStatistic对象应该放在不同的容器中吗?或者我应该有一个包含我需要创建的所有内容的全局容器吗?
谢谢:)
答案 0 :(得分:2)
DI容器的优点在于您可以定义依赖关系,容器为您提供具有所有依赖关系(及其依赖关系等)的对象。放置在容器中的对象越多,可以将这些对象一起使用而不在其中一个对象中调用“new”的概率更高。
所以 - 如果User的“Sessions”对象和SiteStatistics的“Sessions”对象相同,那么一定只使用一个容器。如果它们不同,仍然使用一个容器,但在配置依赖项时为每个会话对象使用不同的标识符。
如果您正在寻找将Site会话数据与SiteStatistics数据隔离的方法,我认为DI容器是错误的。