2016-03-17 47 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