2012-05-09 38 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; 
    } 
}