在PHP中是否有一种方法可以创建匿名对象?

5

我可以使用以下代码来工作吗:

    new \Controllers\ServiceController()->fbdump();

那么我是否不需要创建一个变量来执行单个方法?
1个回答

6

是的,但是你需要添加一组括号,因为->优先级高于new

(new \Controllers\ServiceController)->fbdump();

有趣。为什么? - Zhigalin - Reinstate CMs
@Zhigalin 如果您不添加括号,它将解析为 new ( \Controllers\ServiceController->fbdump() ); 这将无法正常工作。 - Paul
但是为什么?为什么'->'的优先级比'new'低呢? - Zhigalin - Reinstate CMs
1
@Zhigalin 我不确定,除了这就是Zend引擎的工作方式。这可能是他们在最初开发PHP 4时做出的决定,并且自那以后就没有改变过。据我所知,它甚至没有在任何地方记录下来,因此没有括号的行为可能会在某些引擎中在某个时刻发生变化或者表现得与其他引擎不同。但有括号的行为应该始终是明确定义的。 - Paul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接