永发信息网

为什么Yii2 框架要在控制器里面 init方法取代

答案:2  悬赏:60  手机版
解决时间 2021-01-07 14:19
  • 提问者网友:兔牙战士
  • 2021-01-07 03:19
为什么Yii2 框架要在控制器里面 init方法取代
最佳答案
  • 五星知识达人网友:一袍清酒付
  • 2021-01-07 03:36
在最顶层的Object类的构造函数可以看到

$this->init();

所以实例化类(只要继承Object或其子类),一般都会执行init这个方法,除非覆盖了构造函数,而且没执行父类的构造函数(不过这种情况,yii框架好像是没法正常工作的)。
注:这是Yii2框架里的,yii1.x版本的应该差不多,可以看下源代码
全部回答
  • 1楼网友:北方的南先生
  • 2021-01-07 04:16
因为控制器的基类需要__constuct()方法做一些初始化的工作(比如初始化模板引擎),如果你在控制器里实现了__construct,你还需要在__construct里调用parent::__construct()就太麻烦了。
所以通常会在基类里定义一个空的init方法,并且在__construct里(通常是末尾)调用$this->init(),这样开发的时候就只需要实现init方法
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯