2012-05-09 40 views
3

我有以下代码:代码点火器 - 模型内的调用方法?

class Badge extends CI_Model 
{ 
    public function foo() 
    { 
     echo $this->bar('world'); 
    } 

    public function bar($word) 
    { 
     return $word; 
    } 
} 

但它总是给我就行了一个错误的位置是回声$这个 - >栏(“世界”);

调用未定义的方法(......)

+1

假设您正确加载模型并正确调用'foo()',上面的代码将工作。你确定你是?你在哪里加载模型并调用'foo()'?那是你上面的实际代码还是一个简化版本?如果这不是您的实际代码,请将其粘贴。 –

回答

8

你不加载你的控制器内部模型:

public function test() 
    { 
     $this->load->model('badge'); 
     $this->badge->foo(); 
    } 

因为代码的工作 - 我刚使用未经编辑的模型粘贴:

class Badge extends CI_Model 
{ 
    public function foo() 
    { 
     echo $this->bar('world'); 
    } 

    public function bar($word) 
    { 
     return $word; 
    } 
} 

输出:

world 
2

为了避免任何外部呼叫依赖性,您需要获取Codeigniter实例并通过实例调用方法。

class Badge extends CI_Model 
{ 
    public function foo() 
    { 
     $CI =& get_instance(); 

     echo $CI->Badge->bar('world'); 
    } 

    public function bar($word) 
    { 
     return $word; 
    } 
}