Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php CodeIgniter中的继承_Php_Codeigniter_Inheritance - Fatal编程技术网

Php CodeIgniter中的继承

Php CodeIgniter中的继承,php,codeigniter,inheritance,Php,Codeigniter,Inheritance,我正在构建一系列表单,并试图将父表单类的功能继承到所有表单中。比如说, LeaveForm扩展了表单模型 LeaveFormController扩展了FormController 我正在处理LeaveFormController和LeaveForm中所有与请假表相关的内容 在LeaveFormController构造函数中,我只需调用父类构造函数,然后加载LeaveForm模型。在FormController构造函数中,我加载表单模型 我的问题是,我出错了 无法在form.php中重新声明类表单

我正在构建一系列表单,并试图将父表单类的功能继承到所有表单中。比如说,

LeaveForm扩展了表单模型

LeaveFormController扩展了FormController

我正在处理LeaveFormController和LeaveForm中所有与请假表相关的内容

在LeaveFormController构造函数中,我只需调用父类构造函数,然后加载LeaveForm模型。在FormController构造函数中,我加载表单模型

我的问题是,我出错了

无法在form.php中重新声明类表单


我的架构搞错了吗?如何处理此问题?

检查类是否已按如下方式初始化:

if (!class_exists('classname'))
{
    // ok fine create new instance now
}

检查类是否已按如下方式初始化:

if (!class_exists('classname'))
{
    // ok fine create new instance now
}
可能是在$this->load->model'Form时,手动包含models/Form.php文件

在leaveform.php模型文件中,确保加载使用codeigniter的模型加载机制而不是require或include扩展的超类模型。Codeigniter有一个加载程序,它跟踪已经加载的文件,以避免重新声明类,但您需要使用$this->load来使用它。它不知道直接使用include或require加载的文件

因此,在leaveform.php的顶部,使用以下命令:

$CI =& get_instance(); $CI->load->model('Form');
这并不相关,但除非您以与命名控制器类相同的方式命名CodeIgniter模型类的名称,否则您会感到痛苦

尝试使用FormModel扩展CI_模型{};而不是形式扩展CI_模型{}

当您$this->load->model'Form时,是否手动包含models/Form.php文件

在leaveform.php模型文件中,确保加载使用codeigniter的模型加载机制而不是require或include扩展的超类模型。Codeigniter有一个加载程序,它跟踪已经加载的文件,以避免重新声明类,但您需要使用$this->load来使用它。它不知道直接使用include或require加载的文件

因此,在leaveform.php的顶部,使用以下命令:

$CI =& get_instance(); $CI->load->model('Form');
这并不相关,但除非您以与命名控制器类相同的方式命名CodeIgniter模型类的名称,否则您会感到痛苦

尝试使用FormModel扩展CI_模型{};而不是形式扩展CI_模型{}

也许是?此外,我建议在Codeigniter的forumsMaybe或?我还建议在Codeigniter论坛上创建一个新的线程