Yii和PHP初始化vs构造问题

Yii和PHP初始化vs构造问题,php,yii,constructor,init,magic-methods,Php,Yii,Constructor,Init,Magic Methods,我有一个从CController继承的控制器继承的寄存器控制器 当我使用\u construct()时,它无法呈现视图 我尝试在函数末尾添加parent::_construct($this->getUniqueID()),但没有成功 当我使用init()时,它正在工作 知道Yii是如何处理构造vs init的吗?知道它为什么找不到渲染视图吗 编辑: 这种情况是可行的,当用_construct替换init时,它无法呈现视图。一般来说,我不建议覆盖Yii中任何对象上的construct 我知道这有点

我有一个从CController继承的控制器继承的寄存器控制器

当我使用
\u construct()
时,它无法呈现视图

我尝试在函数末尾添加
parent::_construct($this->getUniqueID())
,但没有成功

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

知道Yii是如何处理构造vs init的吗?知道它为什么找不到渲染视图吗

编辑:
这种情况是可行的,当用_construct替换init时,它无法呈现视图。

一般来说,我不建议覆盖Yii中任何对象上的construct

我知道这有点违反直觉,但是Yii是围绕约定工作的,这里的约定是将初始化代码放在init()方法中

如果您想查看代码,您将看到我在幕后做了很多工作,它需要检查以解析视图的路径

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


只要遵守惯例,你就会没事的,我想不出有什么情况不适合把传统逻辑放在init方法中。你不是在把参数传递给构造函数吧?

@tinyByte,是的,你已经看到了……如果你看我的问题,我添加了parent::construct,但没有用……这就是我使用init的想法,你也看到了吗?@tinyByte我想这是我的答案:“我同意你的观点,方法命名非常重要。在Yii中,init()方法意味着一个对象已经完全配置好,应该在这个方法中完成一些额外的初始化工作。“尽管我想知道为什么Yii用不同的方式处理_______________________________。
class Controller extends CController {
}


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