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 文件夹,并在其中添加了两个文件
- AppService.php
- AppServiceInterface.php
现在我在 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;
}
我已经创建了一个接口,我正在尝试将它注入到 Controller 中。但我收到以下错误:
Argument 1 passed to backend\controllers\AgencyController::__construct() must implement interface common\service\AppServiceInterface, string given
我在 common 文件夹中创建了 service 文件夹,并在其中添加了两个文件
- AppService.php
- AppServiceInterface.php
现在我在 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;
}