我正试图通过application/core
中的子控制器在application/controllers
中调用我的核心控制器类。我Home
中的home.php
控制器application/controllers
在Public_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
我能解决这个问题吗? 谢谢
答案 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;
}
}
}