用户
 找回密码
 入住 CI 中国社区
搜索
12
返回列表 发新帖
楼主: michaelzhouh
收起左侧

[HELP] 扩展CI_Controller成功,但是构造函数没执行

[复制链接]
 楼主| 发表于 2013-12-13 11:59:55 | 显示全部楼层
解决了,我的每一个Controller都必须
PHP复制代码
 
public function __construct() {
        parent::__construct();
}
 
复制代码

就OK了,感觉好冗余哦,有啥办法去掉这个不?
发表于 2013-12-13 13:20:03 | 显示全部楼层
michaelzhouh 发表于 2013-12-13 11:11
那我hmvc模式,比如有 后台管理系统,前台用户管理系统,供应商管理系统……我需要每一个单独用一个Contr ...

这个跟什么模式没关系。
CI 的规定就是类名和文件名必须相同,并且只能继承一级父控制器类,换句话说,你的需求 CI 不支持。
如果想支持,就要扩展 CI 的相关功能。

发表于 2013-12-13 13:21:36 | 显示全部楼层
michaelzhouh 发表于 2013-12-13 11:59
解决了,我的每一个Controller都必须

就OK了,感觉好冗余哦,有啥办法去掉这个不? ...

这是 PHP 的语言特性,不能自动执行父类构造函数。
你可以不写构造函数,就会自动执行父类构造函数了,但如果子类有构造函数就没办法了。

 楼主| 发表于 2013-12-13 13:56:10 | 显示全部楼层
Hex 发表于 2013-12-6 15:44
CI 不支持控制器多级继承,你只能从 MY_Controller 继承。

MY_Controller继承了CI_Contoller,application的controllers里面的php始终要 再继承MY_Controller噻。是不是相当于都继承了2次了。
发表于 2013-12-13 14:02:11 | 显示全部楼层

CI 不支持控制器多级继承,你只能从 MY_Controller 继承。这个也是规定吗?
发表于 2013-12-13 14:44:05 | 显示全部楼层
michaelzhouh 发表于 2013-12-13 13:56
MY_Controller继承了CI_Contoller,application的controllers里面的php始终要 再继承MY_Controller噻。是 ...

你要这么说,那是继承了两级,我的意思也是这样了,CI 默认不能实现无限制的继承。

发表于 2013-12-13 14:45:07 | 显示全部楼层
fengshuang_110 发表于 2013-12-13 14:02
CI 不支持控制器多级继承,你只能从 MY_Controller 继承。这个也是规定吗?

这个不能叫做规定,而是 CI 只是设计为支持继承 MY_Controller,换句话说,CI 只有这个能力。
当然,可以通过扩展 CI 来实现多级继承。

本版积分规则