好吧,我是CodeIgniter Framework的新手,我正在尝试构建一个通用的Model 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();
}
}
问题是当我尝试从Controller调用“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的文件,并将类名更改为“MY_Basic_Model”。但我得到了错误:
Fatal error: Class 'MY_Basic_Model' not found in /var/www/myproject/application/models/pagina_model.php on line 12
答案 0 :(得分:5)
为此,您必须创建核心系统类(这也称为方法覆盖)。
在 MY_Model.php
目录中创建 application/core/
文件,扩展基础 {{1 }} 类:
CI_Model
现在您可以在模型中扩展它(../ applicaton / models /):
<?php
class MY_Model extends CI_Model {
function __construct()
{
parent::__construct();
}
}
这里有几点需要注意:
1)类声明必须扩展父类
2)您的新班级名称和文件名必须以 MY _ 为前缀(此项目是可配置的)。
如何配置:
要设置自己的子类前缀,请打开application / config / config.php文件并查找此项:
<?php
class Pagina_Model extends MY_Model {
function __construct()
{
parent::__construct();
}
}
的文档:强>
https://ellislab.com/codeigniter/user-guide/general/core_classes.html
答案 1 :(得分:4)
你可以这样做。
假设您在模型文件夹中有basic_model.php。
现在添加您编写的class Basic_Model
代码
class Basic_Model extends CI_MODEL {
function __construct() {
// Call the Model constructor
parent::__construct();
}
}
现在在模型文件夹中创建一个pagina_model.php并添加您编写的代码。只需包括像bellow
这样的第一行<?php
require APPPATH.'/models/basic_model.php';//just add this line and keep rest
class Pagina_Model extends Basic_Model {
function __construct()
{
parent::__construct();
}
}
希望这能解决您的问题
答案 2 :(得分:2)
你可以这样做...... MY_模型非常好但是你希望子模型能够扩展你可以随时使用的不同子模型:
require(APPPATH.'models/Other_model.php');
class New_model extends Other_Model {
在我的实例中,Other_Model实际上扩展了MY_model。