2011-11-28 125 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