2011-11-28 113 views
2

这些东西是如何工作的?

$ object-> foo1() - > foo2() - > foo3();按顺序调用函数

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

+0

多项式,phpmet =伟大的解释感谢。 – Gowri

回答

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

首先,PHP将得到一个指针从$object变量foo1方法。它调用这个方法,然后返回另一个对象。这第二个对象(我们称之为$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(); 
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" 
+1

我认为这个概念也在这里详细解释... http://en.wikipedia.org/wiki/Method_chaining – iWantSimpleLife