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

本文详细解析了在Yii2框架中,控制器类的init方法与beforeAction方法在调用顺序上的差异,特别是在继承关系中,揭示了类自身init方法优先于父类beforeAction方法执行的现象,避免多人协作时可能产生的判断不准确问题。
738

被折叠的 条评论
为什么被折叠?



