2017-04-07 50 views
2

我處於一個新的窘境,並一直在嘗試使用它,我只得到了一些錯誤,但我是一些決心學習如何做到這一點,經過一番搜索後,看起來無法做到我想要的那種說法。面向對象的PHP類調用function1() - > function2()來自一個線路調用

在課堂上有兩個或更多的功能(每個大概可以分開地稱爲[SP]):

public function functionOne($some_var){ 
    some other code to be run; 
} 
public function functionTwo($some_other_var){ 
    some other code to be run after functionOne(), not called here; 
} 

從主叫方(模型):

$tClass = new TestClass(); 
$result = tClass->functionOne()->functionTwo(); 
echo $result; 

這甚至可能從PHP?我知道它在像Laravel這樣的框架中工作,這是我瞭解它的地方。這將是很好的...所以我問我是否做錯了?或者甚至有可能,如果我在哪裏可以尋找更多,因爲谷歌有關於這個問題的信息非常少。

+2

它被稱爲「流暢接口」在鏈中返回'$ this' –

+0

@MarkBaker每種方法::它的工作謝謝你,我也想感謝你回覆並告訴我正確的名稱,它幫助在隨後的谷歌搜索 –

回答

3

這就是所謂的fluent interface,一旦你的方法是做

return $this; 

最有可能的應該是一個很好的做法,使所有的制定者流利永遠是可行的。我傾向於說唯一不能流利的方法就是你的getter,否則,所有其他方法都完美適合流暢的界面。

class calculator { 
    private $result = 0; 

    public multiplication($number) { 
     $this->result *= $number; 
     return $this; 
    } 

    public addition() { 
     $this->result += $number; 
     return $this; 
    } 

    /* ... */ 

    public getResult() { 
     return $this->result; 
    } 
} 

用法:

$calculator = new calculator(); 
echo $calculator->addition(10)->multiplication(2)->getResult(); // 20 
+0

讓我看看它謝謝:) –

+0

它工作的感謝 - 我測試,並導致了一個固定的電話......謝謝你的回覆,我想也感謝你的重播,並告訴我什麼是正確的方式來引用我想要做的事情,我做了更多的Google搜索,並找到了充足的閱讀主題:) –