Codeigniter无法调用核心类

时间:2016-11-22 11:55:32

标签: php codeigniter

我正试图通过application/core中的子控制器在application/controllers中调用我的核心控制器类。我Home中的home.php控制器application/controllersPublic_Controller中扩展application/core。我的home.php是这样的:

<?php
class Home extends Public_Controller
{
    public $data = array(
        'page' => 'home',
        'main_view' => 'home'
    );

    public function index()
    {
        $this->load->view($this->layout, $this->data);
    }
}

在核心文件夹中,我有public_controller.php

<?php
class Public_Controller extends MY_Controller
{
    // Layout untuk "Publik"
    public $layout = 'layout';
}

从上面的代码中,MY_Controller也位于核心。这是代码

<?php
class MY_Controller extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
        // Autoload model.
        $model = strtolower(get_class($this));
        if (file_exists(APPPATH . 'models/' . $model . '_model.php')) {
            $this->load->model($model . '_model', $model);
        }
    }
}

因此,总而言之,我在home中的控制器application/controllers扩展了public_controller中的application/core以及public_controller扩展my_controller application/core。 我已经通过添加此代码修改了config / config.php

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

所以我可以通过此https://philsturgeon.uk/codeigniter/2010/02/08/CodeIgniter-Base-Classes-Keeping-it-DRY/

的引用将基本控制器连接到控制器

但它仍然没有用。说那个

  

致命错误:找不到类'Public_Controller'   第2行的C:\ xampp \ htdocs \ cipsb \ application \ controllers \ home.php

我能解决这个问题吗? 谢谢

1 个答案:

答案 0 :(得分:0)

看起来我没注意我正在使用的Codeigniter版本。我使用codeigniter 3.1.0,我使用的引用是旧的codeigniter版本。对于codeigniter 3,只需在config / config.php中使用它

function __autoload($class) {
    if (substr($class,0,3) !== 'CI_') {
        if (file_exists($file = APPPATH . 'core/' . $class . '.php')) {
            include $file;
        }
    }
}