DI在yii2中,构造函数注入

时间:2016-11-10 11:13:45

标签: php yii2 yii-components

我创建了一个界面,我试图将其注入到Controller中。但是我收到了以下错误:

  

传递给backend \ controllers \ AgencyController :: __ construct()的参数1必须实现接口common \ service \ AppServiceInterface,给定字符串

我在公共文件夹中创建了服务文件夹,在其中添加了两个文件

  • AppService.php
  • AppServiceInterface.php

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

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

之后我尝试将它注入到AgencyController中,它放在后端/ controllers / AgencyController中,如下所示:

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

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

1 个答案:

答案 0 :(得分:1)

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

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

}