在 CodeIgniter 中扩展模型

Extends Model in CodeIgniter

嗯,我是 CodeIgniter Framework 的新手,我正在尝试构建一个通用模型 Class。参见:

class Basic_Model extends CI_MODEL {

    function __construct() {
        // Call the Model constructor
        parent::__construct();
    }

}

我想扩展所有基于 Basic_Model 的模型,如下所示:

class Pagina_Model extends Basic_Model {

    function __construct() {
        // Call the Model constructor
        parent::__construct();
    }

}

问题是当我尝试从控制器调用 "pagina_model" 时出现以下错误:

Fatal error: Class 'Basic_Model' not found in /var/www/myproject/application/models/pagina_model.php on line 12

如果我在控制器中使用 "basic_model",一切正常。

编辑 1:

我在“/application/core”中创建了一个名为 MY_Basic_Model.php 的文件,并将 class 名称更改为 "MY_Basic_Model"。但是我得到了错误:

Fatal error: Class 'MY_Basic_Model' not found in /var/www/myproject/application/models/pagina_model.php on line 12

为此你必须创建核心系统类(这也称为方法覆盖)。

application/core/ 目录中创建一个文件 MY_Model.php,它将 扩展 基数CI_Modelclass:

<?php
class MY_Model extends CI_Model {

    function __construct()
    {
        parent::__construct();
    }
}

现在您可以在您的模型中扩展它 (../applicaton/models/):

<?php
class Pagina_Model extends MY_Model {

    function __construct()
    {
        parent::__construct();
    }
}


这里有几点需要注意:
1) class 声明必须扩展父 class.
2) 您的新 class 名称和文件名必须以 MY_ 为前缀(此项是可配置的)。


配置方式:
要设置您自己的子 class 前缀,请打开您的 application/config/config.php 文件并查找此项:

$config['subclass_prefix'] = 'MY_';


文档:
https://ellislab.com/codeigniter/user-guide/general/core_classes.html

你可以这样做。
假设您的模型文件夹中有 basic_model.php。 现在添加您编写的 class Basic_Model 的代码

class Basic_Model extends CI_MODEL {

  function __construct() {
    // Call the Model constructor
    parent::__construct();
  }

}

现在在模型文件夹中创建一个 pagina_model.php 并添加您编写的代码。只需包含第一行,如下所示

<?php
  require APPPATH.'/models/basic_model.php';//just add this line and keep rest 
  class Pagina_Model extends Basic_Model {

      function __construct()
      {
          parent::__construct();
      }
   }

希望这能解决您的问题

你可以这样做...MY_ 模型真的很好,但如果你希望子模型扩展不同的子模型,你总是可以这样做:

require(APPPATH.'models/Other_model.php');
class New_model extends Other_Model {

在我的实例中 Other_Model 实际上扩展了 MY_model。