Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Yii2-通过方法签名的DI注入_Php_Dependency Injection_Yii2 - Fatal编程技术网

Php Yii2-通过方法签名的DI注入

Php Yii2-通过方法签名的DI注入,php,dependency-injection,yii2,Php,Dependency Injection,Yii2,我尝试在Yii2框架(版本2.0.15)中实现控制器动作注入。以下是我的控制器操作代码: public function actionTerms(Affiliate $affiliate) { // action code } 在common/components/config/bootstrap.php中注册依赖项 $container = Yii::$container; $container->set('\common\components\Affiliate', '\co

我尝试在Yii2框架(版本2.0.15)中实现控制器动作注入。以下是我的控制器操作代码:

public function actionTerms(Affiliate $affiliate)
{
    // action code
}
在common/components/config/bootstrap.php中注册依赖项

$container = Yii::$container;
$container->set('\common\components\Affiliate', '\common\components\Affiliate');
因此,我收到错误消息:

Missing required parameters: affiliate

如何解决这个问题?

Yii 2不支持操作方法中的依赖项注入。操作参数仅保留给GET参数

如果要在操作中使用依赖项注入,应将独立操作作为单独的类使用:

class AffiliateAction extends Action {

    private $affiliate;

    public function __construct(string $id, Controller $controller, Affiliate $affiliate, array $config = []) {
        $this->affiliate = $affiliate;
        parent::__construct($id, $controller, $config);
    }

    public function run() {
        // do something with $this->affiliate
    }
}
然后将其连接到控制器:

public function actions() {
    return [
        'affiliate' => [
            'class' => AffiliateAction::class,
        ],
    ];
}