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 を実現するためのより良い方法はありますか?