我試圖創建簡單的MVC框架,我堅持依賴。在MVC依賴注入
這是我現在有:
$config = new Config();
$database = new Database($config);
$uri = new Uri('article/5');
$request = new Request($uri);
$response = new Response;
$router = new Router;
$dispatcher = new Dispatcher($request, $response, $router);
$dispatcher->dispatch(); // Routing, instantiate controller, execute action, send response
的問題是:任何物體如何可以訪問任何依賴性?
一些例子:
- 控制器可能需要配置得到的輸出格式選項。
- 映射器可能需要數據庫來執行查詢。
- 任何控制器/幫助程序都需要訪問日誌。
- 助手可能需要任何數量的依賴項(例如:Uri_Helper需要路由器)。
我能想到的唯一可能是使用註冊表,但這違反了德米特法(問你真正需要什麼)。