我正在寻找一些 php 代码,我看到一个对象将在同一行中调用多个方法。
我试图了解如何做到这一点,以及为什么我们需要使用它?
$object->foo("Text")->anotherFoo()->bar("Aloha")
这个造型叫什么?以及在 php 应用程序中使用它的最佳方法是什么。
我正在寻找一些 php 代码,我看到一个对象将在同一行中调用多个方法。
我试图了解如何做到这一点,以及为什么我们需要使用它?
$object->foo("Text")->anotherFoo()->bar("Aloha")
这个造型叫什么?以及在 php 应用程序中使用它的最佳方法是什么。
这种语法称为方法链接,因为每个方法都返回对象本身($this
),所以它是可能的。不一定总是如此,它还用于检索对象的属性,该属性反过来也可以是对象(可以具有对象的属性,等等)。
它用于减少您需要编写代码的行数。比较这两个片段:
没有链接
$object->foo("Text");
$object->anotherFoo();
$object->->bar("Aloha");
使用方法链
$object->foo("Text")->anotherFoo()->bar("Aloha");
this 在第一个函数返回一个对象时使用,该对象将包含将返回另一个对象的第二个函数,依此类推...
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