yii2 中 类继承中 init方法 和 beforeAction的坑

最近使用yii2中 发现controller类在继承关系上 init 和 beforeAction的先后调用有坑,所以做个记录

例如:有两个类,test 继承 base

class BaseController extends Controller{
    public $check = false;
    public function beforeAction($action)
    {
        parent::beforeAction($action);
        $this->check = true;
    }
}
class TestController extends BaseController{
    public function init()
    {
        parent::init();
        var_dump($this->check); //这里会输出false
    }
}

结果在test这个类中,$this->check的值会一直是false

所以得出的结论是类自身的init方法 优先于 父类的 beforeAction 方法

(ps:其实按yii2的文档或者自己写,基本不会出现这个问题,但是如果多人写代码,有些人喜欢用init 有些人喜欢在beforeAction里面做判断,那就可能出现判断不准确问题,所以做个记录!)

你可能感兴趣的:(个人心得,php,yii2)