1 回答

TA貢獻1796條經驗 獲得超7個贊
你應該在你的應用程序開始的時候實例化你的容器(想想一個引導類,或者甚至在 index.php 本身的頂部,考慮一個非常簡單的應用程序),因為你需要在所有后續操作之前準備好容器服務的實例化。
在容器實例化之前唯一可能執行的其他事情是與配置相關的那些,因為容器正常工作通常需要這些(配置參數、PSR-4 自動加載配置等)。
例如,假設您有一個稱為MyController擴展抽象類的類AbstractBaseController。
然后,例如,在 index.php 上,您可以實例化您的容器和控制器:
//index.php
$container = new Container();
$controller = $container->get('namespace\of\MyController');
$controller->render();
當您這樣做時,來自構造函數的所有依賴項都將由容器庫的自動裝配模塊處理。
在實際應用中,控制器的實例化通常在路由器內部處理,路由器將 URL 地址、方法和參數映射到容器要加載的不同類。
自動裝配的一個經驗法則是,您永遠不能再new namespace\of\MyController()直接調用,因為手動實例化它需要您傳遞每個構造函數依賴項(因此您并沒有真正使用自動裝配功能)。實例化它的正確方法始終是使用$container->get('namespace\of\MyController').
- 1 回答
- 0 關注
- 182 瀏覽
添加回答
舉報