我在我的Zend Framework項目中實現了Symfony2依賴注入容器,它在我的應用程序的MVC層中正常工作。我已經初始化DIC在我的引導,並可以通過調用任何地方訪問它:從任何地方訪問DI容器
Zend_Controller_Front::getInstance()->getParam('bootstrap')->getDic()
的問題是,有沒有使用Zend Framework的應用/ MVC層我的應用程序的某些部分。例如,我的CLI工具。我可以在那裏完美初始化一個新的DIC,但這只是從Bootstrap文件中複製粘貼的工作,它要求在路上遇到麻煩(DRY原則等)
這是一個更好的解決方案,使我的DIC可用例如Zend_Registry
或作爲一個單例調用靜態方法DIC::getInstance()
?
我知道註冊表和單身人士被認爲是不好的東西,但DIC是應用程序的高層次部分,我可能永遠不會遇到使其成爲壞事的問題。
這是一個很好的解決方案還是有更好的方法來完成全球可訪問的DIC?
我想你不明白我」 m問,我沒有問題訪問我的DIC在MVC堆棧或使用它的任何類。我已經做了相同的處理你的疙瘩,而是與Symfony2容器。問題是,當我不使用MVC堆棧bootstrap沒有使用(例如CLI工具),因此DIC沒有初始化,這讓我想知道Bootstrap是否真的是我的情況下初始化它的正確位置。 – ChrisR
爲什麼不初始化引導你的CLI工具?創建一個擴展'Zend_Application'並覆蓋'run的應用程序類()'來禁用'Zend_Front_Controller'引導。然後,您將能夠使用您的引導資源,而無需MVC堆棧。 – Florent
是的,但是因爲我沒有FrontController,因此訪問DIC不可能和'Zend_Controller_Front :: getInstance()'一起使用。這就是爲什麼我問是否有更好的選項來訪問我的應用程序的CLI部分中的DIC(註冊表,單身人士...),也可能在我的MVC堆棧中。 – ChrisR