$对象 - > foo1() - > foo2的() - > foo3();
我在Magento php框架中工作。在Magento中,函数被称为序列。但是,我不明白它是如何工作的。任何人都可以解释。
答案 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"