私が自分でコーディングしているアプリケーション(MVC)では、依存性注入を使用してオブジェクトにその依存性を渡しています。シングルトン パターンや依存性注入コンテナーを使用したくありません。
アプリケーションが起動すると、次のような重要なオブジェクトをインスタンス化する手続き型コードがいくつかあります: (以下よりも多くのオブジェクトをロードしますが、私が何をしているのかを説明するには十分なはずです)
/*
* ------------------------------------------------------
* INSTANTIATE THE APPLICATION CLASS
* ------------------------------------------------------
*/
$app = new App();
$app->environment('development');
/*
* ------------------------------------------------------
* INSTANTIATE THE CONFIGURATION CLASS
* ------------------------------------------------------
*/
$config = new Config();
/*
* ------------------------------------------------------
* INSTANTIATE THE LOGGER CLASS
* ------------------------------------------------------
*/
$logger = new Logger($config);
/*
* ------------------------------------------------------
* INSTANTIATE THE LOCALE CLASS
* ------------------------------------------------------
*/
$locale = new Locale();
/*
* ------------------------------------------------------
* INSTANTIATE THE HTTP RESPONSE CLASS
* ------------------------------------------------------
*/
$httpResponse = new HttpResponse();
/*
* ------------------------------------------------------
* INSTANTIATE THE ROUTER CLASS
* ------------------------------------------------------
*/
$router = new Router($config, $logger, $httpResponse);
$router->route();
ご覧のとおり、$logger オブジェクトは $config オブジェクトに依存しており、$config オブジェクトを $logger オブジェクト コンストラクターに挿入します。
ここで、$router オブジェクトをインスタンス化しているときにわかるように、3 つの依存関係 ($config、$logger、および $httpResponse) があります。
$logger オブジェクトが $config オブジェクトを内部に保持する方法が奇妙に感じるので、 $config オブジェクトと $logger オブジェクトを $router オブジェクトのようにオブジェクトに別々に挿入すると、 $config オブジェクトを 2 回挿入しているように感じますそしてそれは間違っている。
明らかに、オブジェクトと依存関係がますます多くなると、同じオブジェクトを2、3回以上注入しているように見え、それが間違っているのではないかと本当に疑問に思うでしょう。
私がしていることは大丈夫ですか?