在Codeigniter 2中扩展多个模型

Roo*_*eyl 5 php codeigniter codeigniter-2

如何设置CI2以允许扩展多个模型?

我只能扩展一个名为MY_Model的模型(放入/ application/core)(区分大小写).

选择我正在做的扩展模型; 在模型中..

require_once APPPATH.'core/MY_Another_model.php';
class Test_model extends MY_Another_model {
...
}
Run Code Online (Sandbox Code Playgroud)

我无法在核心系统代码中找到它所声明的位置,只允许将被扩展的模型称为MY_Model.

感谢您的帮助.

lan*_*ons 9

我已经尝试了Cubed Eye的方式,但是它有效,但这是另一种选择:

尝试将模型添加到autoload.php文件中.它可以从MY_Model(继承自CI_Model)继承,并且您加载的任何其他模型都可以从它继承:

class Extended_model extends MY_Model {
    public function __construct()
    {
        parent::__construct();
        $this->load->model('Another_model');
    }
}
Run Code Online (Sandbox Code Playgroud)

(型号/ Extended_model.php)

class Another_model extends Extended_model {
}
Run Code Online (Sandbox Code Playgroud)

(型号/ Another_model.php)

编辑:我刚刚意识到你将扩展模型放在"核心"文件夹中.这仅适用于扩展核心CI_*类的类(即MY_Controller,MY_Model,MY_Input等).如果您的模型扩展了MY_Model,请将其放在模型/文件夹中,而不要在其前面添加"MY_".


Cub*_*Eye 4

正如我在有关控制器的问题中所说,您只需将两个类放在同一个 MY_Model 文件中。该文件用作 codeigniter 自动加载功能的一部分,这意味着它将查找带有 MY_ (或配置定义)前缀的任何文件。

您甚至不需要调用 MY_Model 中的类,您可以将其称为 MY_Special_Model 并直接在下面使用 MY_Another_Model