函数按顺序调用

时间:2011-11-28 06:56:40

标签: php oop function magento object

这些东西是如何运作的?

  

$对象 - > foo1() - > foo2的() - > foo3();

我在Magento php框架中工作。在Magento中,函数被称为序列。但是,我不明白它是如何工作的。任何人都可以解释。

2 个答案:

答案 0 :(得分:5)

$object->foo1()->foo2()->foo3();

首先,PHP将从foo1变量获得指向$object方法的指针。它调用此方法,然后返回另一个对象。第二个对象(我们称之为$object2)有一个方法foo2(),它也被称为。 foo2()返回另一个对象($object3),该对象有一个方法foo3(),可以返回它喜欢的任何内容。

在某些情况下,$object$object2$object3只是指向同一对象的指针。这意味着您可以按顺序在同一个类上调用方法。

你可以很容易地做到这一点:

class Foo
{
    public function nicely()
    {
        return $this;
    }

    public function formatted()
    {
        return $this;
    }

    public function chained()
    {
        return $this;
    }

    public function calls()
    {
        return $this;
    }
}

$foo = new Foo();
$foo->nicely()->formatted()->chained()->calls();

答案 1 :(得分:3)

当类中的方法返回值时,它们返回自己的对象。这允许您按照发布的顺序继续调用该类中的其他方法。

class myClassA {

    public $str = NULL;

    public function setStr( $value ){
        $this->str .= $value;
        return $this; // This is the key to sequencing
    }

}

$myclass = new MyClassA();
$myclass->setStr("H")->setStr("E");

// If you echoed the $str variable in myClassA, you would get
// "HE"