2017-01-02 45 views
3
構造

我想注入接口app\models\IFoo我如何注入到接口控制器在Yii2

private $foo; 

public function __construct($id, $module, IFoo $foo, array $config = []) 
{ 
    parent::__construct($id, $module, $config); 
    $this->foo = $foo; 
} 

我應該如何設置容器糾正解決具體的類app\models\Foo它實現IFoo的依賴?

+0

你能解釋一下這個目的是什麼嗎?可能更容易回答。 – Bizley

+0

我在兩個具體類中實現了IFoo:Foo和FooStub。我想用stub進行測試等等。我想將接口注入控制器並在安裝文件(web.php或其他)中設置具體的類。 – GraDea

回答

2

嘗試調用它一樣,在入口腳本:

\Yii::$container->set('app\models\IFoo', $concreteClass); 

其中$concreteClass或者是'app\models\Foo''app\models\FooStub'

+0

它在哪裏對不對?就在web.php上? – GraDea

+0

我想你可以將它添加到web.php中,用於非測試env和test.php中,用於測試env。 – Bizley