這是我目前所知:如何使用IoC容器?我不明白這一點
DI讓我建立可重複使用的,單位可測試組件
DI是冗長的,因爲它要求我明確設置的依賴關係(通過構造函數或方法,但我仍然不明白接口注入)。這就是爲什麼需要容器或服務定位器的原因。
容器比服務定位器更好,因爲類不需要知道它的存在。
但我發現這些問題:
一些類現在將取決於從容器?如果我不使用每個類的默認配置,如我的服務文件中所述,某些類需要調用容器來重新配置所需的對象。
從這張幻燈片http://www.slideshare.net/fabpot/dependency-injection-with-php-53的第79頁上,Fabien Potencier說Container並不管理所有對象,只有那些只有一個實例(但不是單例)的對象。我現在更加困惑。
任何幫助,非常感謝。 =)
如果他們不依賴於容器,那麼他們如何創建具有非默認配置的孩子(即:運行時定義的設置)? – HappyDeveloper 2010-10-16 02:22:16
@HappyDeveloper:它是完成所有佈線和配置的容器。單獨的類*接收*依賴和配置。 – 2010-10-16 02:27:10
是的,我知道,但只適用於默認對象創建。如果在程序執行的某個點(在孩子的孩子的孩子的方法內),出於某種原因,我需要一個說法,DB_Cache依賴項,而不是File_Cache?我需要調用容器 – HappyDeveloper 2010-10-16 03:53:12