为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Yii
慕标5832272 2018-08-09 08:28:09
为什么Yii2 框架要在控制器里面 init方法取代__construct构造方法?thinkphp里面也是如此,控制器里面用 __init**方法取代了__construct?有哪些必要性和好处呢??
查看完整描述

2 回答

?
PIPIONE

TA贡献1829条经验 获得超9个赞

我刚才在yii2 2.0.6版本里面,__construct方法里面不能使用

Url::toRout('index/index')

因为控制器在构造方法执行完毕后才会注册。
你只能在前置操作里面操作,也就是你所谓的__ini*()方法。
也就是说,前置方法能得到一个系统级初始化完毕后的系统,构造方法不是。
前置方法并没有取代构造方法
构造方法总是会执行,前置方法在内部调用时候不会执行,只对访问控制器有效。


查看完整回答
反对 回复 2018-08-12
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

因为控制器的基类需要__constuct()方法做一些初始化的工作(比如初始化模板引擎),如果你在控制器里实现了__construct,你还需要在__construct里调用parent::__construct()就太麻烦了。
所以通常会在基类里定义一个空的init方法,并且在__construct里(通常是末尾)调用$this->init(),这样开发的时候就只需要实现init方法

查看完整回答
反对 回复 2018-08-12
  • 2 回答
  • 0 关注
  • 1343 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信