2013-01-21 43 views
3

我正在測試寫js的PHP的方式,我不知道這是否可能。PHP,返回類作爲對象

如果說我有A,B功能的C類

Class C{ 
    function A(){ 

    } 
    function B(){ 

    } 
} 
$D = new C; 

$D->A()->B(); // <- Is this possible and how?? 

在JS,我們可以簡單的寫like D.A().B();

我試過return $thisfunction A(),沒有工作裏面。

非常感謝您的建議。

回答

7

你在找什麼叫做流利的界面。您可以通過實現它的類方法返回自己:

Class C{ 
    function A(){ 
     return $this; 
    } 
    function B(){ 
     return $this; 
    } 
} 
+0

非常感謝您! – Till

6

返回$this裏面的方法A()實際上是要走的路。 請向我們展示應該不起作用的代碼(該代碼中可能存在另一個錯誤)。

+0

非常感謝!我發現我寫錯了一些東西......我不好意思發表這個問題.. – Till

3

其實很簡單,你有一系列的mutator方法都會返回原始(或其他)對象,這樣你可以保持調用函數。

<?php 
class fakeString 
{ 
    private $str; 
    function __construct() 
    { 
     $this->str = ""; 
    } 

    function addA() 
    { 
     $this->str .= "a"; 
     return $this; 
    } 

    function addB() 
    { 
     $this->str .= "b"; 
     return $this; 
    } 

    function getStr() 
    { 
     return $this->str; 
    } 
} 


$a = new fakeString(); 


echo $a->addA()->addB()->getStr(); 

這個輸出「AB」

返回$this裏面的功能,可以調用與同一個對象,就像jQuery不會其他的功能。

2

我想它和它的工作

<?php 

class C 
{ 
    public function a() { return $this; } 
    public function b(){ } 
} 

$c = new C(); 
$c->a()->b(); 
?>