2013-12-09 19 views
-1

下面的PHP代码是有效的:我可以在对象的新实例上使用箭头运算符吗?

$a = new MyClass(); 
$a->myFunction(); 

是否有这两个说法结合起来的有效方法是什么?我第一次尝试理解导致语法错误:

new MyClass()->myFunction(); 

我加入了创建的对象周围的支架,并且运行良好的PHP 5.4.17,但不是在PHP 5.3.26:

(new MyClass())->myFunction(); 

这个语法在什么时候被接受,或者我应该放弃这个想法,只用两行。我的实际用例更加复杂,如果我不必一直创建一次性变量,它会使代码更加整洁。

我无法在文档中找到任何有关此内容的信息。

+0

我的坏。似乎我没有完全使用正确的术语来找到它。 – DanielGibbs

回答

1
(new MyClass())->myFunction(); 

自PHP 5.4以来就是正义。您可以使用它,但我认为两行方法更清洁,向后兼容旧版本的PHP,不会混淆阅读代码的newcomming程序员:)

1

(new MyClass())->myFunction()符号在PHP 5.4引入了(包括其他一些短手记号,请参阅new features-page)。

一种解决方法(我不建议在所有情况下滥用这一点)是在MyClass的静态方法:

class MyClass { 
    public static newInstance() { 
     return new self(); 
    } 
    public function myFunction() {} 
} 

MyClass::newInstance()->myFunction(); 
相关问题