2011-10-19 46 views
2

我可以在CodeIgniter中編寫可鏈接函數嗎?Codeigniter可編寫鏈接函數

所以,如果我有這樣的功能:

function generate_error(){ 
    return $data['result']  = array('code'=> '0', 
             'message'=> 'error brother'); 
} 

function display_error(){ 
     $a= '<pre>'; 
     $a.= print_r($data); 
     $a.= '</pre>'; 
     return $a; 
} 

我想通過鏈接他們叫那些:

echo $this->generate_error()->display_error(); 

我爲什麼要單獨的這些功能的原因是因爲display_error()是隻對開發有用,所以當涉及到生產時,我可以刪除display_error()或類似的東西。

謝謝!

回答

2

要編寫可鏈式函數,他們是一個類的一部分,然後從該函數返回對當前類的引用(通常爲$this)。 如果你返回除了對類的引用以外的任何東西,它將會失敗。

它也可能返回引用到其他類(例如,當您使用的代碼點火器活動記錄類get()函數返回給DBresult類的引用)

class example { 

    private $first = 0; 
    private $second = 0; 

    public function first($first = null){ 
    $this->first = $first; 
    return $this; 
    } 

    public function second($second = null){ 
    $this->second = $second; 
    return $this; 
    } 

    public function add(){ 
    return $this->first + $this->second; 
    } 
} 

$example = new example(); 

//echo's 15 
echo $example->first(5)->second(10)->add(); 

//will FAIL 
echo $example->first(5)->add()->second(10); 
0

你應該返回$this您函數在php中做連鎖函數

 

public function example() 
{ 
// your function content 
return $this; 
}