我正在寻找一些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