有人可以在Yii2中使用DI容器指出我的实际示例或教程的方向吗?
我一定很厚,但是关于这个主题的2.0指南对我来说还不太清楚。另外,我所审查的大多数在线教程和示例代码都带有Yii::$app
单例,这使测试变得困难。
例如,您具有类\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中找到带有代码示例的有关此模式的出色文档。
这是设置默认窗口小部件设置的简单示例:
[抱歉,我提出了一个如此古老的话题Ruben,但我只是在寻找有关它的信息。此代码建议应在应用程序中的哪个位置进行配置,以维护小部件中的默认配置,而不必在使用它的每个视图中都进行配置。问候!