扩展CodeIgniter基本模型导致致命错误:找不到类'MY_Model'

时间:2013-07-08 08:21:35

标签: codeigniter codeigniter-2

我想扩展CI_Model

<?php

class ModelBasic extends CI_Model
{

} 

 ?>

除非在这样的路径下,否则不会自动加载:

./application/core/MY_Model.php

似乎MY_Model.php的名称是强制性的。现在我的问题是,当我创建MY_Model.php CodeIgniter时,我希望我有一个名为MY_Model的模型,我想避免它。我可以拥有自己的自定义模型名称,而无需使用假类来抑制此错误吗?

Fatal error: Class 'MY_Model' not found in /var/www/CodeIgniter/system/core/Common.php on line 174 

2 个答案:

答案 0 :(得分:1)

在没有任何其他修改的情况下实现命名自定义基本模型的最快方法是创建文件application/core/MY_Model.php,定义一个空的MY_Model类,然后创建自己的自定义类( ES):

class MY_Model extends CI_Model {}

class ModelBasic extends MY_Model {

    // Your code here
}

// Define more than one if you want.

class ModelComplicated extends MY_Model {

    // Your code here
}

其他选项包括:

  1. 扩展Loader类,并将model()方法替换为您自己的修改版本。这可能很复杂(我没有完全探讨过),因为实际错误发生在system/core/Common.php :: load_class()中,在模型示例中,它实例化了基本CI_Model类,以及作为MY_Model,如果它找到一个(它默认自动查找,就像其他基类一样)。

  2. 创建/添加一个自动加载器,它遵循您自己的加载核心类的规则(如果您尝试自动加载不仅仅是模型,可能会很复杂 - 实际上取决于您希望如何设置应用程序)。

答案 1 :(得分:-2)

扩展Loader类并重写该部分代码。