Yii和PHP init vs构造问题

时间:2013-10-14 10:06:09

标签: php yii constructor init magic-methods

我有一个Register控制器,它继承自继承自CController的Controller。

当我使用__construct()时,它无法呈现视图。

我尝试在功能结束时添加parent::_construct($this->getUniqueID()),但没有运气。

当我使用init()时,它正在运作。

知道Yii如何处理构造与init以及它为什么找不到渲染视图?

编辑:

class Controller extends CController {
}


class RegisterController extends Controller{
    public function init() {
    .
    .
    .
    }
}

这种情况正常,当用__construct替换init时,它无法呈现视图。

1 个答案:

答案 0 :(得分:2)

一般情况下,我不建议覆盖Yii中任何对象的构造。

我知道它有点反直觉,但Yii适用于约定,这里的约定是在init()方法中放置初始化代码。

如果您想查看Controller's source代码,您会看到我做了很多工作,它需要检查themes and controllers folders以解析视图的路径。

这主要发生在render方法中。但根据经验,坚持使用init()方法。

坚持惯例,你会没事的,我想不出一个不适合在init方法中放置aditional逻辑的情况。它不像你将参数传递给构造函数,是吗?