最近使用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里面做判断,那就可能出现判断不准确问题,所以做个记录!)