2012-07-19 58 views
12

我在PHP中遇到問題。 在我的PHP文件,我創建了以下行:如何在同一行中對類方法進行多次調用?

$foo = $wke->template->notify() 
        ->type("ERROR") 
        ->errno("0x14") 
        ->msg("You are not logged.") 
        ->page("login.tpl"); 

最後,我需要我的$foo變量將返回此:

$foo->type = "ERROR" 
$foo->errno= "0x14" 
$foo->msg= "You are not logged." 
$foo->page= "login.tpl" 

請注意,$wke->template是我需要調用notify()元素。

+2

的問題是不明確的。用言語解釋你的初衷 – zerkms 2012-07-19 02:23:50

+0

你爲什麼堅持要一條線?你應該在不同的調用中做到這一點! – alfasin 2012-07-19 02:27:15

+0

謝謝你的回覆。我需要創建一個方法來構建一個包含我需要的所有信息的變量。我需要定製所有被調用的方法來做特定的事情,並且同時返回我需要的所有信息。 – DrSAS 2012-07-19 02:36:52

回答

30

只是通過「 - >」來調用類的函數的方式,因爲函數返回類的同一對象。看下面的例子。你會得到這個

class Wke { 

    public $type; 
    public $errno; 
    public $msg; 
    public $page; 

    public $template = $this; 

    public function notify(){ 
     return $this; 
    } 

    public function errorno($error){ 
     $this->errno = $error; 
     return $this; // returning same object so you can call the another function in sequence by just -> 
    } 
    public function type($type){ 
     $this->type = $type; 
     return $this; 
    } 
    public function msg($msg){ 
     $this->msg = $msg; 
     return $this; 
    } 
    public function page($page){ 
     $this->page = $page; 
     return $this; 
    } 
} 

整個魔術的return $this;

+0

它的工作!謝謝! – DrSAS 2012-07-19 10:41:26

+0

請投票。 – 2012-07-19 10:43:12

+0

我現在不能。我沒有權利表示抱歉(沒有足夠的聲望):s – DrSAS 2012-07-19 10:46:29

1

這些方法中的每一個都需要返回一些存儲你設置的參數的對象。據推測,它將是包含每個對象屬性的template,並且當您調用該方法時,它會設置相應的變量並返回自身。

相關問題