2011-10-19 10 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)。 クラスへの参照以外を返すと失敗します。

あなたがあなたの中に$thisを返す必要があります

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

(あなたがコードイグナイタアクティブレコードのクラスget()機能を使用する場合、それはDBresultクラスへの参照を返すなど)他のクラスへの参照を返すことも可能ですphpで連鎖可能な関数を作る関数

 

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