2016-03-17 46 views
1

我上的Magento注意到,他們稱這是像一個對象引用的函數:類 - 函數對象 - PHP

className::function('example')->example; 

這對我來說是沒有意義的它是如何工作的?我試圖在一個測試文件中模仿這個,但我什麼也沒得到。

<?php 

class Example 
{ 

    public function test($arg) 
    { 
     $want = new ExampleTwo; 
     return 1; 
    } 

} 

class ExampleTwo 
{ 
    public $want; 
    public function urgh($arg) 
    { 
     $this->want = "returnn"; 
    } 
} 

$Obj = new Example; 
echo $Obj->test('random')->want; 

注意試圖讓非對象的屬性就行號24

任何人都可以請解釋函數如何成爲一個對象?如果是這樣,我怎麼才能從函數對象獲取值。

+0

函數需要返回的對象不是字符串 –

回答

3

如果你在一個函數返回一個對象,你可以直接從函數返回值調用該對象。

在您的測試案例:

public function test($arg) 
{ 
    $want = new ExampleTwo; 
    return $want; 
} 

如果你有這樣的:

$Obj = new Example; 
echo $Obj->test('random')->want 

這將呼應ExampleTwo類,它會在你的示例代碼NULL的「希望」屬性。

+0

哇,那其實更有意義,其實我不知道你能做到這一點?這是真棒,你甚至可以添加功能和通話功能' - > anotherTest - > andAnother(「SSSS」);'那是瘋了 – KDOT

+0

這增加了一個全新的層面,以面向對象編程(「?」):○感謝! – KDOT