1

这就是我所做的。

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

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

创建的文件MY_Controller.phpapplication/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类扩展主控制器时,它给了我以下问题

致命错误:第 3 行的 C:\xampp\htdocs\projects\PrizeBondSearch\application\controllers\main.php 中找不到类“Frontend_Controller”

任何想法如何解决它?

4

3 回答 3

3

不用担心,终于找到了解决方案。

需要加载库类名。

因此在 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);
        }
    }
}

它现在工作得很好。

于 2013-04-26T14:26:12.707 回答
0

在 MY_Controller.php 的开头包含 Frontend_Controller.php 或使用 spl_autoloader 来防止此错误

于 2013-04-26T14:27:00.673 回答
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);
        }
    }
});
于 2020-08-19T19:14:09.320 回答