如何在一行中调用另一个方法之后的方法

时间:2013-09-26 12:30:28

标签: php

我正在寻找一些PHP代码,我看到一个对象将在同一行中调用多个方法。

我试图了解如何操作,以及为什么需要使用它?

$object->foo("Text")->anotherFoo()->bar("Aloha")

这个造型叫什么?什么是在PHP应用程序中使用它的最佳方式。

2 个答案:

答案 0 :(得分:5)

此语法称为 method chaining ,这是可能的,因为每个方法都返回对象本身($this)。这不一定总是这样,它也用于检索对象的属性,而该对象的属性又可以是一个对象(可以具有对象的属性,等等)。

它用于减少编写代码所需的行数。比较这两个片段:

没有链接

$object->foo("Text");
$object->anotherFoo();
$object->->bar("Aloha");

使用方法链

$object->foo("Text")->anotherFoo()->bar("Aloha");

答案 1 :(得分:0)

这是在第一个函数返回一个对象时使用的,该对象将包含将返回另一个对象的第二个函数,依此类推......

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