1

我想扩展CI_Model

<?php

class ModelBasic extends CI_Model
{

} 

 ?>

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

./application/core/MY_Model.php

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

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

2 回答 2

1

无需任何额外修改即可命名您自己的自定义基础模型的最快方法是创建文件application/core/MY_Model.php,定义一个空MY_Model类,然后创建您自己的自定义类:

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

于 2013-07-10T08:27:50.623 回答
-2

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

于 2013-07-10T06:45:03.883 回答