好吧,我是CodeIgniter Framework的新手,我正在尝试构建一个通用的Model Class.看到:
class Basic_Model extends CI_MODEL {
function __construct() {
// Call the Model constructor
parent::__construct();
}
}
Run Code Online (Sandbox Code Playgroud)
我想基于Basic_Model扩展所有模型,如下所示:
class Pagina_Model extends Basic_Model {
function __construct() {
// Call the Model constructor
parent::__construct();
}
}
Run Code Online (Sandbox Code Playgroud)
问题是当我尝试从Controller调用"pagina_model"时出现以下错误:
Fatal error: Class 'Basic_Model' not found in /var/www/myproject/application/models/pagina_model.php on line 12
Run Code Online (Sandbox Code Playgroud)
如果我在控制器中使用"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
Run Code Online (Sandbox Code Playgroud)
为此,您必须创建Core System Classes(这也称为Method Overriding).
MY_Model.php在application/core/目录中创建一个扩展基CI_Model类的文件:
<?php
class MY_Model extends CI_Model {
function __construct()
{
parent::__construct();
}
}
Run Code Online (Sandbox Code Playgroud)
现在您可以在模型中扩展它(../applicaton/models/):
<?php
class Pagina_Model extends MY_Model {
function __construct()
{
parent::__construct();
}
}
Run Code Online (Sandbox Code Playgroud)
这里有几点需要注意:
1)类声明必须扩展父类.
2)您的新班级名称和文件名必须以MY_为前缀(此项目是可配置的).
如何配置:
要设置自己的子类前缀,请打开application/config/config.php文件并查找此项:
$config['subclass_prefix'] = 'MY_';
Run Code Online (Sandbox Code Playgroud)
文档:https :
//ellislab.com/codeigniter/user-guide/general/core_classes.html
小智 6
您可以这样进行。
假设您的模型文件夹中有basic_model.php。现在添加class Basic_Model您编写的代码
class Basic_Model extends CI_MODEL {
function __construct() {
// Call the Model constructor
parent::__construct();
}
}
Run Code Online (Sandbox Code Playgroud)
现在,在模型文件夹中创建一个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();
}
}
Run Code Online (Sandbox Code Playgroud)
希望这能解决您的问题
你可以这样做...... MY_ 模型真的很好,但如果你希望一个子模型扩展一个不同的子模型,你总是可以这样做:
require(APPPATH.'models/Other_model.php');
class New_model extends Other_Model {
Run Code Online (Sandbox Code Playgroud)
在我的实例中,Other_Model 实际上扩展了 MY_model。
| 归档时间: |
|
| 查看次数: |
7919 次 |
| 最近记录: |