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

 我来答
就烦条0o
2016-08-09 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46492
从事多年系统运维,喜欢编写各种小程序和脚本。

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

2016-08-09 · 每个回答都超有意思的
知道顶级答主
回答量:3.6万
采纳率:98%
帮助的人:4539万
展开全部
在最顶层的Object类的构造函数可以看到

$this->init();

所以实例化类(只要继承Object或其子类),一般都会执行init这个方法,除非覆盖了构造函数,而且没执行父类的构造函数(不过这种情况,yii框架好像是没法正常工作的)。
注:这是Yii2框架里的,yii1.x版本的应该差不多,可以看下源代码
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式