2016-11-10 170 views
0

我創建了一個接口,我試圖將它注入到Controller中。但我發現了以下錯誤:DI在yii2中,構造函數注入

Argument 1 passed to backend\controllers\AgencyController::__construct() must implement interface common\service\AppServiceInterface, string given

我創造了共同文件夾內的文件夾的服務,增加了兩個文件,把它

  • AppService.php
  • AppServiceInterface.php

現在我在common/bootstrap.php文件中定義了這種依賴關係,如下所示:

Yii::$container->set('common\service\AppServiceInterface', 
        'common\service\AppService'); 

後來我試圖注入它裏面AgencyController其置於後端/控制器/ AgencyController裏面象下面這樣:

namespace backend\controllers; 
use common\service\AppServiceInterface; 
public function __construct(AppServiceInterface $appService) 
{ 
    $this->appService = $appService; 
} 

但正如前面所提到的,我發現了錯誤。

回答

1

所以我不得不改變__construct方法如下圖所示,其工作正常:

public function __construct($id, $module, AppServiceInterface $appService , $config = []) 
{ 
    parent::__construct($id, $module); 
    $this->appService = $appService; 

}