php - Yii 和 PHP 初始化与构造问题

标签 php yii constructor init magic-methods

我有一个继承自 CController 的 Register Controller 。

当我使用__construct()时,它无法渲染 View 。

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

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

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

编辑:

class Controller extends CController {
}


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

这种情况是有效的,当用 __construct 替换 init 时,它无法渲染 View 。

最佳答案

一般来说,我不建议覆盖 Yii 中任何对象的结构。

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

如果您想查看Controller's source代码你会看到我在幕后做了很多事情,它需要检查 themes and controllers folders解析 View 的路径。

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

只要遵守约定就可以了,我想不出有什么情况不适合在 init 方法中添加额外的逻辑。这不像您将参数传递给构造函数,是吗?

关于php - Yii 和 PHP 初始化与构造问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19357843/

相关文章:

Java错误: Default constructor cannot handle exception type FileNotFound Exception

javascript - 在上传之前,我可以在代码中的哪个位置将文件扩展名更改为小写?

php - Google API - 静态 map

oop - Fortran 构造函数返回指向已分配对象的指针

php - 从 GET/POST 预填充 Yii 表单

php - 授予对 Yii2 模块的访问权限

java - 将继承参数从父类(super class)更改为子类

php - 自动创建 mysql 数据库以便可以在使用 PHP 的新计算机上使用时出现问题

PHP-MYSQL 根据截止日期显示不同的颜色

php - 如何在 Yii2 中仅使用 1 个连接查询来获取多 ActiveRecord 模型?