yii2中的DI,构造函数注入

DI in yii2, constructor injection

我已经创建了一个接口,我正在尝试将它注入到 Controller 中。但我收到以下错误:

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

我在 common 文件夹中创建了 service 文件夹,并在其中添加了两个文件

现在我在 common/bootstrap.php 文件中定义了这个依赖项,如下所示:

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

之后,我尝试将其注入到位于 backend/controllers/AgencyController 内的 AgencyController 中,如下所示:

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

但是我收到了前面提到的错误。

所以我必须像下面那样更改 __construct 方法并且它工作正常:

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

}