後學習上的新問題進行調查的一段時間,我終於得出結論,對於我而言,最好的依賴注入容器是:
Dice - minimalist Dependency Injection Container for PHP.
它只有一個文件,並以有代碼,從我的問題是被初始化,所有你需要的是:
(new Dice)->create('Session');
骰子 DIC會照顧其餘的。您可以在Tom Butler(開發人員)主頁上閱讀有關骰子的更多信息。
我個人認爲這是注入依賴關係的最佳(最短和最簡單)方式,默認情況下應該內置在PHP中,我真的很奇怪爲什麼它不是?
爲了從特定的依賴注入容器解耦你的代碼,我還是建議使用自定義類包裝:
class DIC extends Dice
{
function __construct($component, array $args = array(), $callback = null, $forceNewInstance = false)
{
return parent::create($component, $args, $callback = null, $forceNewInstance = false);
}
}
這也將有助於縮短甚至更多的初始化過程,令人難以置信的令人驚歎。現在
,以實例化複雜套DIS的,如:
new Session(new Config, new Database (new Config), new Page (new Config), new Statistics (new Database (new Config)), new Notification, new Filter);
所有你需要做的是:
new DIC('Session');
如果你想一個參數傳遞給構造函數,你可以去:
new DIC('Session', array($param));
我不知道別人怎麼想,但我發現這個驚人的(至少到目前爲止,我在今天的位置)。
請問,請客氣評論一下可能存在的缺點,以後我會在將來如何使用這個DIC(Dice)或者這個方法來面對!
這是「可用」,但想象一直在做這個。查看您配置(一次)然後用於自動解析對象並注入依賴項(多次)的DI容器會更好。看看[Pimple](http://pimple.sensiolabs.org/)和[Illuminate \ Container](http://laravel.com/api/4.1/Illuminate/Container/Container.html)。 – Jon
@Jon我是自動解析器的新手,能否請您提供一個如何使用它的例子的答案?我認爲這對未來的讀者會有用。 –
那麼,我會基本上從文檔複製粘貼...我認爲人們直接轉到源代碼更好。 – Jon