在我自己编码的应用程序(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 对象两次这是错误的。
显然,当我拥有越来越多的对象和依赖项时,我似乎将同一个对象注入超过两三次,这真的会让我怀疑我是否做错了。
我在做什么好吗?