扩展CodeIgniter核心类

时间:2017-09-15 20:49:22

标签: codeigniter inheritance codeigniter-3

我的核心文件夹中有2个控制器:

  1. MY_Controller
  2. MY_AdminController
  3. 两者都扩展了CI_Controller。第一个很好,但第二个没有,当我调用继承自MY_AdminController的控制器时,我得到一个错误:

    Fatal error: Class 'MY_AdminController' not found
    

    经过一些研究后我发现:

    https://codeigniter.com/user_guide/general/core_classes.html
    

    在本文档中,它说你使用" MY _"前缀(可以在配置中更改它)来扩展核心类,我这样做。

    我错过了什么?

    更新 我想知道问题是否是因为我在内部创建了一个文件&#34; core&#34;文件夹,CI检查它的核心是否存在同名但前缀为CI的原始核心<?p>

2 个答案:

答案 0 :(得分:1)

以下是a good explanation,为什么你不能按照你所描述的方式去做。基本上CodeIgniter会查找['subclass_prefix'] . $Classname,例如'MY_' . 'Controller'。以下是CI2

的相同问题

<强>解决方案:
MY_ControllerMY_AdminController放在MY_Controller.php

MY_Controller.php

class MY_Controller extends CI_Controller {
    public function __construct() {
        parent::__construct();
    }

    ...
}

class MY_AdminController extends CI_Controller {
    public function __construct() {
        parent::__construct();
    }

    ...
}

答案 1 :(得分:1)

允许任何新课程。表示哪个类别在系统/核心中定义了注释 解决方法如下。

  

尝试将以下功能放在配置文件的底部

/application/config/config.php

function __autoload($class) {
    if(strpos($class, 'CI_') !== 0)
    {
        @include_once( APPPATH . 'core/'. $class . '.php' );
    } }

My core class My_head not found in codeigniter