codeigniter,类没有从库文件夹扩展

时间:2013-04-26 14:02:55

标签: php codeigniter

这就是我所做的。

applications/config/config.php文件中的我的设置

$config['index_page'] = '';
$config['uri_protocol'] = 'AUTO';
$config['url_suffix'] = '';
$config['subclass_prefix'] = 'MY_';

MY_Controller.php

中创建了文件application/core

MY_Controller.php 文件包含:

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

Frontend_Controller.php

中创建了文件application/libraries

Frontend_Controller.php 文件包含

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

最后,我用Frontend_Controller扩展了主控制器类 我的主控制器驻留在application/controllers/main.php

class Main extends MY_Controller {

    public function __construct()
    {
        parent::__construct();
        $this->load->model('PrizeBondSearch_Model');
    }

    public function index()
    {
        $PrizeBonds = $this->PrizeBondSearch_Model->ShowAllPBS();
        $this->load->view('home', $PrizeBonds);
    }
}

问题: 所以这就出现了问题,当我使用MY_Controller扩展主控制器类时,它完全正常,

但是当我尝试使用Frontend_Controller类扩展主控制器时,它会给我以下问题

  

致命错误:找不到类'Frontend_Controller'   C:\ XAMPP \ htdocs中\项目\ PrizeBondSearch \程序\控制器\ main.php   在第3行

任何想法如何解决它?

3 个答案:

答案 0 :(得分:2)

不用担心,最后找到解决方案。

需要加载库类名。

所以在config.php文件中添加了下面的行。

function __autoload($classname){
    if(strpos($classname, 'CI_')!==0){
        $file = APPPATH.'libraries/'.$classname.'.php';
        if(file_exists($file)&& is_file($file)){
            @include_once($file);
        }
    }
}

现在它的工作非常好。

答案 1 :(得分:0)

在MY_Controller.php的开头包含Frontend Controller.php或使用spl_autoload来防止此错误

答案 2 :(得分:0)

已接受的答案的某些内容已在PHP中弃用。

在您的config.php文件中使用此功能

spl_autoload_register(function ($classname) {
    if (strpos($classname, 'CI_') !== 0) 
    {
        $file = APPPATH . 'libraries/' . $classname . '.php';
        if (file_exists($file) && is_file($file)) 
        {
            @include_once($file);
        }
    }
});