yii容器使用

想实现的功能

利用容器的递归反射进行获取对象,解决依赖问题

相关类

Show类

class Show
{
    public function show()
    {
        var_dump('show---show');
    }
}

MyFilter类

class MyFilter
{
    public function __construct(Show $show, $id)
    {
       var_dump('MyFilter---构造函数');
       var_dump($id);
    }

    public function show()
    {
        var_dump('show');
    }

}

控制器代码

获取MyFilter

$obj = Yii::$container->get(MyFilter::class, ['id' => 1]);
var_dump($obj->show());

但是会报错, id这个参数依赖没解决,该如何写?
laravel中app()这样是可以的

阅读 2.3k
1 个回答

你少传了一个show参数呀, 这个必须要按照构造参数的顺序来传, 应该是这样的

$obj = Yii::$container->get(MyFilter::class, ['show' => Yii::$container->get(Show::class), 'id' => 1]);
var_dump($obj->show());

你的MyFilter定义了两个构造参数, 你要按照顺序去传, 可以少后面的,但是不能少前面的

推荐问题