2012-07-03 45 views
0

我試圖創建一些類,我想用這個語法:在函數內部創建一個函數到類中?

$my = new My(); 
$my->field()->test('test'); 

我知道該怎麼做了$my->test('test'),很容易 - 但是我不知道如何將field()屬性添加到在我的代碼中更容易理解我的課程。

我可以猜想這是類到另一類的東西 - 擴展 - 但我不知道這一點,所以如果你知道如何做類似的事情。

我確定它只是爲了更好地理解我的課程。我的意思是分類這個My類中的函數。

謝謝:)

+0

什麼是* *的具體問題,你碰到?只是詢問一下,因爲我必須承認我有問題來解決你的問題。你爲什麼不能*這樣做呢? *你在哪裏*語言功能/對象功能?如果一個功能起作用,爲什麼你不能理解另一個功能是相同的語言概念?或者如果你明白,你在哪裏碰到路障? – hakre

回答

2

如果你打破你的PHP下來一點,你就會明白是怎麼回事。例如,讓我們這樣做:

$my->field()->test('test'); 

進入此(澄清)。

$newObject = $my->field(); 
$newObject->test('test'); 

從這裏你可以觀察到方法$ my-> field()的返回實際上是一個包含另一個方法測試的對象,然後你可以調用它。它被稱爲方法鏈,有時可能有用。

下面是測試情況:

class a{ 
    public function My(){ 
     return new b; 
    } 
} 

class b{ 
    public function foo(){ 
     echo 'hello bar'; 
    } 
} 

$a = new a(); 
$a->My()->foo(); 
+1

謝謝你的幫助,現在我明白了。 –

0

爲了執行上的方法的動作的方法需要返回的對象。

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

將使

$d = new a(); 
$d->b("foo")->b("bar"); 
$d->b("foo")->b("bar")->b("far")->b("tar"); 
相關問題