Yii2依赖注入示例

问题描述 投票:6回答:3

有人可以在Yii2中使用DI容器指出我的实际示例或教程的方向吗?

我一定很厚,但是关于这个主题的2.0指南对我来说还不太清楚。另外,我所审查的大多数在线教程和示例代码都带有Yii::$app单例,这使测试变得困难。

php dependency-injection yii2
3个回答
4
投票

例如,您具有类\app\components\First,并且\app\components\Second实现一个接口\app\components\MyInterface

您只能使用DI容器在一个地方更改班级。例如:

class First  implements MyInterface{
    public function test()
    {
        echo "First  class";
    }
}
class Second implements MyInterface {
    public function test()
    {
        echo "Second  class";
    }
}

$container= new \yii\di\Container();
$container->set ("\app\components\MyInterface","\app\components\First");

现在您在调用$container->get("\app\components\MyInterface");时给出头等舱的实例>

$obj = $container->get("\app\components\MyInterface");
$obj->test(); // print "First  class"

但是现在我们可以为此接口设置其他类。

$container->set ("\app\components\MyInterface","\app\components\Second");
$obj = $container->get("\app\components\MyInterface");
$obj->test(); // print "Second class"

您可以在一个地方设置类,其他代码将自动使用新类。

[Here您可以在Yii中找到带有代码示例的有关此模式的出色文档。


2
投票

这是设置默认窗口小部件设置的简单示例:


0
投票

[抱歉,我提出了一个如此古老的话题Ruben,但我只是在寻找有关它的信息。此代码建议应在应用程序中的哪个位置进行配置,以维护小部件中的默认配置,而不必在使用它的每个视图中都进行配置。问候!

© www.soinside.com 2019 - 2024. All rights reserved.