2011-11-23 55 views
1

我一直在試圖構建我自己的PHP MVC框架純粹作爲一個教育練習,我想了解如何最好地處理/設計框架以支持依賴注入可選用戶組件的一些輸入。依賴注入可選用戶組件

例如,有一個「核心」框架配置對象,然後在應用程序文件夾下,用戶可以指定他們自己的應用程序配置文件/對象,如果他們需要它。

我沒有在特定的控制器中創建核心配置對象,而是將核心配置對象注入到控制器中,因爲這樣會使測試更容易(並遵循依賴注入的原則)。

這很好,很有意義,但是應用程序配置對象會發生什麼?用戶可以使用該框架,從不需要特定於應用程序的配置對象/文件,因此爲每個控制器注入特定於應用程序的配置對象似乎效率低下且浪費資源。

所以基本上我問的是如何支持用戶可能需要或可能不需要的組件的依賴注入?

請記住,我對依賴注入和TDD的想法很陌生,所以我猜上面的問題有一個非常小的解決方案,但我還沒有偶然發現它我讀過的文章。

我以爲我在http://misko.hevery.com/2008/08/21/where-have-all-the-singletons-gone/ Misko Hevery的文章中找到了答案,但我認爲工廠不能解決可選用戶組件的問題。

回答

0

如果我理解正確,請注意,注入可能不會最終被使用的對象的事實。

這可以通過使用懶惰注入,這是一個空代理對象將加載只有當它被使用的「真實」目標的注射來解決。

PHP-DI支持它例如:

class Class1 { 
    /** 
    * @Inject(lazy=true) 
    * @var Class2 
    */ 
    private $class2;