如何正确使用依赖注入?因为使用注入类的方法会产生新的依赖性

时间:2018-06-11 08:21:12

标签: php dependency-injection dependency-management

我是一名自学者,试图成为一名优秀的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类层还有需要调整的依赖项,如果我需要切换库/包/组件使用

我的思维在哪里出错?

0 个答案:

没有答案