>我正在将 Codeigniter.2.1.3 用于网站,所以我需要扩展CI_Controller,以便我可以添加一个要与所有控制器一起执行的方法,所以我做了user_guide中的内容:
在应用程序/核心文件夹中创建一个名为 MY_Controller.php 的文件 在其中创建扩展CI_Controller的类MY_Controller更改我的常规控制器以扩展MY_controller如下所示:MY_controller.php:
class MY_Controller extends CI_Controller{
protected $page;
# Constructor
function __construct (){
parent::__construct();
#code shared with all controllers
}
public function get_page(){
#code to get_the right page here
}
}
名为 Regular.php 的常规控制器:
class Regular extends MY_Controller{
public function __construct(){
parent::__construct();
}
public function index(){
$this->get_page();
}
}
但是以下错误不断出现:
致命错误:在第 2 行的/var/www/immo/CodeIgniter_2.1.3/application/controllers/regular.php 中找不到类"MY_Controller"
包含MY_Controller
类或自动加载它。 我建议您通过将以下内容添加到application/config/config.php
文件中来自动加载它。
function __autoload($class)
{
if (strpos($class, 'CI_') !== 0)
{
if (file_exists($file = APPPATH . 'core/' . $class . EXT))
{
include $file;
}
}
}
确保文件名大小写完美。Linux 服务器区分大小写。因此,如果类名是My_Controller那么文件的名称应该在
config/config 中
My_Controller.php/* load class in core folder */
function my_load($class) {
if (strpos($class, 'CI_') !== 0) {
if (is_readable(APPPATH . 'core' . DIRECTORY_SEPARATOR . $class . '.php' )) {
require_once (APPPATH . 'core' . DIRECTORY_SEPARATOR . $class . '.php');
}
}
}
spl_autoload_register('my_load');
$config['subclass_prefix'] = "MY_"
在config.php
中检查一下,当然你应该在控制器名称中使用它,如MY_Controller.php
和命名"类MY_Controller...."
这个答案晚了,但我得到了
"致命错误:找不到类'MY_Controller'"错误
当我在 Web 根目录而不是应用程序/控制器目录中有一个同名的控制器 (.php
) 文件时。
实际上,不知道它是如何到达那里的,但是当我删除它时,问题就消失了。