単純な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
の質問は:どのように任意のオブジェクトは、すべての依存関係へのアクセスを得ることができますか?
いくつかの例:
- コントローラは、出力書式オプションを取得するコンフィグレーションが必要な場合があります。
- Mapperでは、クエリを実行するためにデータベースが必要な場合があります。
- すべてのコントローラ/ヘルパーは、ログにアクセスする必要があります。
- ヘルパーは任意の数の依存関係を必要とすることがあります(例:Uri_Helperにはルータが必要です)。
私が考えることができる唯一の可能性はレジストリを使用することですが、これはDemeterの法則に違反します(本当に必要なものを尋ねます)。