关于核心CI_Controller
我想在扩展为MY_Controller ,然后User_Controller ,Public_Controller在去继承MY_Controller 这三个文件都在Core下面作为基础Controller 使用并且在config中配置加载 但是在Controller下做继承使用时 只用MY_Controller 能用,有大神这么做吗?我用的CI3.0 CI 只能支持一级继承。但你可以把 MY_Controller User_Controller 都放到 MY_Controller.php 里。编程时候脑子要灵活一些~ Hex 发表于 2016-12-12 13:44CI 只能支持一级继承。但你可以把 MY_Controller User_Controller 都放到 MY_Controller.php 里。编程时候 ...
1. 你说的方法我试过 但是不是想要的最佳效果
2,我想弄明白的是 我做的为什么就行不通 exp 发表于 2016-12-12 14:12
1. 你说的方法我试过 但是不是想要的最佳效果
2,我想弄明白的是 我做的为什么就行不通 ...
1、你可以说一下你要的最佳效果
2、你弄的在config中配置加载,行不通的原因只能是加载前后的关系,放在core里面是实例化控制器之前加载,你放到config中的话,控制器都已经实例完了,这时候再加载,那你是不是会报错? Michael锐生 发表于 2016-12-12 14:20
1、你可以说一下你要的最佳效果
2、你弄的在config中配置加载,行不通的原因只能是加载前后的关系,放在c ...
一个单独的功能模块 会用一个基础的ControllerUser的话User_Controller admin 的话Admin_Controller
我是在config中最后做的 __autoload()去加载core下的核心 exp 发表于 2016-12-12 14:12
1. 你说的方法我试过 但是不是想要的最佳效果
2,我想弄明白的是 我做的为什么就行不通 ...
为什么行不通,很简单,CI 不支持,CI 原本就只支持一级继承,你可以理解成功能限制。。。可能 CI 的作者认为一级继承已经足够了。。。。 exp 发表于 2016-12-12 14:49
一个单独的功能模块 会用一个基础的ControllerUser的话User_Controller admin 的话Admin_Control ...
在 index.php 里增加 autoload 我觉得是可行的,index.php 本身就是可以自己随便修改的文件。 Hex 发表于 2016-12-12 13:44
CI 只能支持一级继承。但你可以把 MY_Controller User_Controller 都放到 MY_Controller.php 里。编程时候 ...
并不是这样的喔,CI是支持多级继承的,我在实际中也是这么使用的。
core中有个MY_Controller是继承的CI_Controller,
core中还有个Admin_Controller继承了MY_Controller。
controllers里创建的控制器是可以继承Admin_Controller的。
但是有个注意的地方就是CI在加载时只会自动加载config配置文件中配置的这个前缀的文件:
$config['subclass_prefix'] = 'MY_';
所以需要在MY_Controller.php文件中加载一下Admin_Controller.php
像这样:require_once 'Admin_Controller.php';
然后就可以在创建Admin_Controller时使用中继承Admin_Controller了。
所以楼主这么做是没问题的,只是少了一个小步骤,就是需要在MY_Controller.php尾部中增加下两行代码:
require_once 'User_Controller.php';
require_once 'Public_Controller.php';
当然,另一个需要注意的就是集成的构造函数中要这样:
public function __construct()
{
//必须的
parent::__construct();
} lostincoding 发表于 2016-12-15 14:27
并不是这样的喔,CI是支持多级继承的,我在实际中也是这么使用的。
core中有个MY_Controller是继承的CI_C ...
你这样写肯定是可以搞定,但是这不是“CI本身就支持”,本身就支持的意思是不用写任何额外代码就能支持。比如你加载一个类库,根本不需要 include,这属于本身支持,所以,我才说 CI 本身是不支持多级继承的。 lostincoding 发表于 2016-12-15 14:27
并不是这样的喔,CI是支持多级继承的,我在实际中也是这么使用的。
core中有个MY_Controller是继承的CI_C ...
是的 但是就是想的就是这样的
之前在国外看到的视频 是在config里面用autoload来加载另外的两个核心控制器的当然他拿的版本是CI2.0
但是3.0 好像不支持
页:
[1]
2