我正在尋找一些php代碼,並且我看到了一個將在同一行中調用多個方法的對象。如何在一行中調用另一種方法後的方法
我試着去了解如何去做,爲什麼我們需要使用它?
$object->foo("Text")->anotherFoo()->bar("Aloha")
這種造型叫什麼?什麼是在PHP應用程序中使用它的最佳方式。
我正在尋找一些php代碼,並且我看到了一個將在同一行中調用多個方法的對象。如何在一行中調用另一種方法後的方法
我試着去了解如何去做,爲什麼我們需要使用它?
$object->foo("Text")->anotherFoo()->bar("Aloha")
這種造型叫什麼?什麼是在PHP應用程序中使用它的最佳方式。
這種語法被稱爲method chaining,這是可能的,因爲每個方法返回對象本身($this
)。這並不總是這種情況,它也用於檢索對象的屬性,該對象的屬性又可以是對象(可以具有屬於對象的屬性,等等)。
它用於減少需要編寫代碼的行數。比較這兩個片段:
沒有鏈接
$object->foo("Text");
$object->anotherFoo();
$object->->bar("Aloha");
使用方法鏈式
$object->foo("Text")->anotherFoo()->bar("Aloha");
當第一函數返回將包含所述第二函數,將一個對象,這是使用返回另一個對象等...
class X
{
public function A()
{
echo "A";
}
public function B()
{
echo "B";
}
}
class Y
{
public function A()
{
echo "Y";
}
public function B()
{
return $this;
}
}
$y = new Y();
$y->B()->A();//this will run
$x = new X();
$x->A()->B();//this won't run, it will output "A" but then A->B(); is not valid
閱讀本文http://stackoverflow.com/questions/3724112/php-method-chaining – Aris