如何在 Yii2 中将接口注入控制器的构造函数
Posted
技术标签:
【中文标题】如何在 Yii2 中将接口注入控制器的构造函数【英文标题】:How can I inject interface into controller's constructor in Yii2 【发布时间】:2017-05-16 09:02:45 【问题描述】:我要注入接口app\models\IFoo
private $foo;
public function __construct($id, $module, IFoo $foo, array $config = [])
parent::__construct($id, $module, $config);
$this->foo = $foo;
我应该如何设置容器来正确解决实现IFoo
的具体类app\models\Foo
中的依赖关系?
【问题讨论】:
你能解释一下这样做的目的是什么吗?可能更容易回答。 我在两个具体的类中实现了 IFoo:Foo 和 FooStub。我想使用存根进行测试等。我想将接口注入控制器并在设置文件(web.php 或其他)中设置具体类。 【参考方案1】:尝试在入口脚本中这样调用它:
\Yii::$container->set('app\models\IFoo', $concreteClass);
其中$concreteClass
是'app\models\Foo'
或'app\models\FooStub'
。
【讨论】:
我猜你可以将它添加到 web.php 用于非测试环境和 test.php 用于测试环境。以上是关于如何在 Yii2 中将接口注入控制器的构造函数的主要内容,如果未能解决你的问题,请参考以下文章
Nest.js 模型依赖注入与 Mongoose 没有构造函数
Asp.Net Core默认注入方式下多接口实现如何注入以及如何指定构造函数注入
Asp.Net Core默认注入方式下多接口实现如何注入以及如何指定构造函数注入