尽管定义了方法,但未定义的方法

时间:2012-09-25 20:25:38

标签: php class codeigniter fatal-error

在codeigniter网站上出现一个非常奇怪的错误问题。

Fatal error: Call to undefined method Document::get_by_module()

导致此问题的代码行(在控制器中)是:

$this->document_type->get_by_module('module1');

控制器的构造函数:

function __construct(){
    parent::__construct();
    $this->load->model('document','document_type');
}

document_type类看起来像这样

class Document_type extends CI_Model {
    function Document_type () {
        parent::__construct();

    }       
    function get_by_module($prefix) {
        // code 
    }
}

我看到的主要问题是它说Document::是类,但它应该是Document_type。我认为没有理由它应该在文档类中查找该函数。

如果我从控制器构造函数中删除'document'类的加载,则错误消失(但其他事情会中断)。

不确定这样的事情是怎么发生的。

1 个答案:

答案 0 :(得分:1)

看起来您正在加载错误的模型文件。这条线

$this->load->model('document','document_type');

意味着以下内容:找到一个名为“Document”的模型创建一个实例并放在$this->document_type下。 (see the 4th example

看起来你有一个Document模型,所以加载成功,但如果你不想重命名放在$this(控制器实例)下的实例,你就不应该使用第二个参数在$this->load->model()行。

只需写下$this->load->model('document_type');

即可