我只需要解釋或推動正確的方向如何搜索:對於某些類方法,子方法(?)是什麼?用另一種方法在類中的PHP方法?
我見過像電話:
$data = Log::Bank($var1, $var2)->start();
$data = Log::Bank($var1, $var2)->refund();
或類似
$xml = getData($uri)->toArray();
哪些start()
,refund()
和toArray()
選擇?
我只需要解釋或推動正確的方向如何搜索:對於某些類方法,子方法(?)是什麼?用另一種方法在類中的PHP方法?
我見過像電話:
$data = Log::Bank($var1, $var2)->start();
$data = Log::Bank($var1, $var2)->refund();
或類似
$xml = getData($uri)->toArray();
哪些start()
,refund()
和toArray()
選擇?
這些方法返回的對象上還有其他方法並且也被調用。所以getData將返回一些具有toArray()方法的對象。
您可以和返回對象本身和使用方法鏈,即
class MailBuilder {
private $subject;
private$ $body;
public function setSubject($body) {
$this->body = $body;
return $this;
}
public function setBody($body) {
$this->subject = $subject;
return $this;
}
}
,然後你可以這樣做:
$builder = new MailBuilder();
$builder->setSubject('something')->setBody('something');
所以,你可以這樣做,因爲該方法返回對象本身,儘管你可以將調用鏈接到下一個方法。
記住這樣的代碼(調用嵌套太深對象)不好(其稱爲火車事故):
$object->someMethodReturningObject()->someOtherMethod()->nextObjectMethod()
這些都不是子方法,他們的方法鏈接。在這種情況下,Log::Bank($var1, $var2)
將返回一個對象。從該方法返回的對象具有您可以使用的start()
方法。所以當你在最後添加->start()
時,你會在返回的對象上運行它。
你有沒有教程的鏈接,我可以閱讀和理解它們是如何工作的以及它們是如何創建的? – Peon
我建議這樣做,以便在PHP中很好地掌握oo,並且文檔確實很好 - http://php.net/manual/en/language.oop5.php您可以檢出其他一些教程,如果格式不適合你,只需搜索php oo教程...順便說一句。 $ this在一個對象(類)上下文中將返回該對象的實例(在我的例子中是MailBuilder) –