2016-11-22 133 views
0

我想從我的子控制器調用我的核心控制器類application/coreapplication/controllers。我有Home控制器home.phpapplication/controllers,延伸Public_Controllerapplication/core。我home.php是這樣的:Codeigniter無法調用核心類

<?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); 
     } 
    } 
} 

因此,在總結我有控制器homeapplication/controllers延伸在application/corepublic_controllerpublic_controller延伸my_controller,同樣在application/core。 我已經通過將此代碼

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/

連接基地控制器控制器修改配置/ config.php文件,但它仍然無法正常工作。說,

Fatal error: Class 'Public_Controller' not found in C:\xampp\htdocs\cipsb\application\controllers\home.php on line 2

有什麼我可以做的解決這個問題? 謝謝

回答

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; 
     } 
    } 
}