我在 Application / core 中创建了名为“ MY_Controller.php ”的自定义控制器,并通过应用程序控制器继承成功调用。
//application/core
class MY_AdminController extends CI_Controller {
function __construct() {
parent::__construct();
}
}
//application/controllers
class User extends MY_AdminController {
public function __construct(){
parent::__construct();
}
}
工作正常。我刚刚将我的文件名从“MY_Controller.php”更改为 MY_AdminController.php ,并且遵循相同的类名,但是它引发了以下错误,
Fatal error: Class 'MY_AdminController' not found
根据文档,每当你创建一个带有 MY _ 前缀的类时,CodeIgniter Loader类会在加载核心库后加载它,那么为什么它会抛出错误...... !!!
答案 0 :(得分:2)
转到config.php并更改
$config['subclass_prefix'] = 'MY_'; to $config['subclass_prefix'] = 'MY_Admin';
答案 1 :(得分:1)
扩展Patel, 问题是MY_是原始核心文件的前缀。
控制器,模型,视图等。
MY_将用于寻找控制器的名称,例如,MY_controller搜索CI_controller。
您无法使用MY_prefix加载随机名称。您使用MY_扩展已存在的名称。
答案 2 :(得分:0)
我认为问题出在班级名称上,您可能没有将班级名称从MY_Controller
更改为MY_AdminController
答案 3 :(得分:0)
您可以使用自定义类。但CI仅在配置文件中加载具有类前缀的类(例如 MY_
)。所以我解释了它是如何工作的,并创建了一个自动加载类的解决方法。你可以在https://stackoverflow.com/a/22125436/567854找到它。
希望这会有所帮助:)
答案 4 :(得分:0)
如果要包含核心文件夹中的所有文件。然后在config.php文件的末尾写下面的代码。路径到文件是application / config / config.php
function __autoload($class)
{
if (strpos($class, 'CI_') !== 0)
{
@include_once( APPPATH . 'core/' . $class . EXT );
}
}
通过使用它,您可以创建多个类。