我是一名自学者,试图成为一名优秀的PHP开发人员,并希望完全理解依赖注入。
我理解广泛的原则,理论上依赖注入使我的类没有与其他类紧密耦合的依赖。
但我不明白如何在实践中充分实施。
使用PHP League容器和示例控制器的示例:
/***************************************************************************************
* DI Container setup
***************************************************************************************/
$container = new Container();
/***************************************************************************************
* Register Service Providers
***************************************************************************************/
$container->addServiceProvider(new \App\Providers\ConfigProvider);
/***************************************************************************************
* Register Container Class Dependencies
***************************************************************************************/
$container->share('App\Http\Controller')
->withArguments(['config']);
现在在我的控制器中,我会收到这样的注入依赖:
class Controller
{
public $config;
function __construct($config)
{
$this->config = $config;
}
function index()
{
$newConfigItem = 'domain.com';
$configDomain = $this->config->setConfig($newConfigItem);
}
}
Controller只是一个例子,它可以是任何类,任何类型的类,如Serviceprovider,Middleware等。
这是关于正确处理依赖注入的一般性问题。
没有使用注入的Config类的setConfig()方法创建一个新的紧耦合依赖项吗?
即使我使用Container创建一个新的Object,直接在任何类中使用容器只是创建了一个依赖于用于注册/扩展Container中对象的容器方法。
或者我是否需要一个额外的PHP类层,它以某种方式包装我的依赖项以使用新的方法名称,但即使这样,这个额外的php类层还有需要调整的依赖项,如果我需要切换库/包/组件使用
我的思维在哪里出错?