我在 Zend Framework 项目中实现了 Symfony2 依赖注入容器,它在我的应用程序的 MVC 层中运行良好。我已经在我的引导程序中初始化了 DIC,并且可以通过调用在任何地方访问它:
Zend_Controller_Front::getInstance()->getParam('bootstrap')->getDic()
问题是我的应用程序的某些部分没有使用 Zend Framework 应用程序/MVC 层。例如我的 CLI 工具。我可以在那里完美地初始化一个新的 DIC,但这只是 Bootstrap 文件中的一些复制粘贴工作,这会在路上遇到麻烦(DRY 原则等)
例如,让我的 DIC 在Zend_Registry
或作为静态方法调用的单例中可用是更好的解决方案DIC::getInstance()
吗?
我知道注册表和单例被认为是坏事,但 DIC 是应用程序的高级部分,我可能永远不会遇到使其成为坏事的问题。
这是一个好的解决方案还是有更好的方法来实现全球可访问的 DIC?