こんにちは私はSilexを使用してPHPアプリケーションを作成しています。依存性注入を使いたいと思います。依存性注入については、依存関係をコンテナにロードする必要があります。私はdi.phpというコンテナに何をロードするのかの定義をすべて含んだファイルが1つあります。すべての要求にすべての依存関係をロードする必要がありますか?
/**
* DI.php
*/
$app['db.connection'] = function() use($app) {
return new Connection([
'dbname' => $app['dbname'],
'dbuser' => $app['dbuser'],
'dbpass' => $app['dbpass'],
'dbhost' => $app['dbhost'],
]);
};
$app['user.repository'] = function() use($app) {
return new UserRepository($app['db.connection']);
};
$app['post.repository'] = function() use($app) {
return new PostRepository($app['db.connection']);
};
$app['index.controller'] = function() use($app) {
return new IndexController($app['user.repository']);
};
$app['post.controller'] = function() use($app) {
return new PostController($app['post.repository']);
};
しかし、このファイルはすべてのリクエストで要求され、すべての依存関係がコンテナにロードされ、私の質問は、私は私が唯一の要求ではなく、すべてのために必要な依存関係を読み込むことができる方法です。
あなたは、*呼び出されたときにそれらのオブジェクトインスタンスを返すコールバック関数を定義しています*。私はSilexについて知らないが、誰かがそれらの関数を呼び出さない限り、オブジェクトはロード/インスタンス化されない。 – deceze