我在代码点火器的Admin_Model
目录下创建了一个模型Application\core
。我把所有基本数据库操作都放在它下面。当我尝试扩展Application\model
目录下的模型时,会抛出错误。
Fatal error: Class 'Admin_Model' not found in <path to root>/application/models/new_model.php on line 3
我应该错过任何配置吗?
答案 0 :(得分:2)
感谢所有人的努力。 我找到了解决方案。
默认情况下,CodeIgniter在其配置文件中有一个设置。
L.TileLayer
我只是将'MY_'替换为'Admin_'一切正常。
$config['subclass_prefix'] = 'MY_';
更合适的解决方案是
将以下代码添加到config.php
$config['subclass_prefix'] = 'Admin_';
那是全部
答案 1 :(得分:2)
如果您仍然无法使用 __ autoload 来使用库中的类,这也可能会有所帮助。当我在控制器上使用类库到父类时,它对我有用。
PHP 5&gt; = 5.1.2,PHP 7
这是我在application / config.php的代码
spl_autoload_register(function ($classname){
if(strpos($classname,'CI_') == 0){
$file = APPPATH.'libraries/'.$classname.'.php';
if(file_exists($file)){
@include_once($file);
}
}
});
答案 2 :(得分:1)
扩展核心类
如果您只需要为现有库添加一些功能 - 可能添加一两个功能 - 那么用您的版本替换整个库就太过分了。在这种情况下,简单地扩展课程会更好。扩展一个类几乎与用一些例外替换类相同:
类声明必须扩展父类。 您的新班级名称和文件名必须以 MY _ 为前缀(此项目可配置。请参见下文。)。 例如,要扩展本机Model类,您将创建一个名为application / core / MY_Model .php的文件,并使用以下命令声明您的类:
class MY_Model extends CI_Model {
}
注意:如果需要在类中使用构造函数,请确保扩展父构造函数:
class MY_Model extends CI_Model {
function __construct()
{
parent::__construct();
}
}