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

让CI控制器可以继承自定义类

  [复制链接]
发表于 2011-5-6 21:49:40 | 显示全部楼层
收藏,看看先
发表于 2011-6-4 20:31:55 | 显示全部楼层
Fatal error: Class 'MY_Controller' not found in E:\php\www\bobojz\application\controllers\Child.php on line 2
我的也是找不到类。。。
发表于 2011-8-25 17:41:02 | 显示全部楼层
2.0.2版,MY_Controller.php好像是放在application/core目录。
并且是继承CI_Controller
发表于 2012-2-20 17:57:53 | 显示全部楼层
是的 2.02 要把MY_Controller.php放在application/core目录。
然后控制器 就可以继承MY_Controller了
发表于 2012-2-29 15:28:50 | 显示全部楼层
手册上说的是要使用你自己的系统类替换默认类只需简单的将你自己的 .php 文件放入本地文件夹 application/core。是放入到application/core下面啊。
发表于 2012-5-31 10:56:31 | 显示全部楼层
按照楼主的方式测试,没通过,class_exists的确存在,但是继承却无法实现,而且就算能够实现那么理论上也没有在controllers中制作父类更理想,所以,我的方式是这样:

controllers/welcome.php中代码如下:

require_once(APPPATH . 'controllers/My_Controller.php');
class Welcome extends My_Controller
{
...

----------------------------------------------
自定义父类(My_Controller.php)中代码如下:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class My_Controller extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
        if (method_exists($this, '_init')) {
            $this->_init();
        }
    }
}


如此除了多了一句require_once代码,其它的都是非常理想的,而且解决了单继承的问题,下面的观众可以扔鸡蛋了
发表于 2012-7-4 11:10:48 | 显示全部楼层
kyzy_yy_pm 发表于 2012-5-31 10:56
按照楼主的方式测试,没通过,class_exists的确存在,但是继承却无法实现,而且就算能够实现那么理论上也没 ...

放在controllers下的话,会被外部访问到吧?
发表于 2014-9-25 11:39:46 | 显示全部楼层
puras 发表于 2010-12-17 23:53
我也是按照这种方式实现的。
可是现在有个问题:
这种方式,是扩展现有类,你只能扩展一个

我也遇到了这个问题,发现设计的简单,但是不灵活啊,我直接用MY_Controller里面写两个类,或者用require包含新的文件(针对一个类一个文件的强迫症)
发表于 2014-10-29 15:28:39 | 显示全部楼层
不过CI的扩展性 不用说强大!!

本版积分规则