正如您在标题中看到的那样,我的编程背景是Java。在Java中你可以做这样的事情
new Object().callSomeMethod();
如果您只需要一次这个对象,则无需将创建的Object分配给变量,非常有用且清晰的编码。
现在在PHP中我尝试做同样的事情
new Object()->callSomeMethod();
但在这里我得到一个'解析错误:语法错误,意外' - >' (T_OBJECT_OPERATOR)”
有没有办法在PHP中执行此操作?
答案 0 :(得分:16)
(new Object())->callSomeMethod();
将在PHP 5.4 +
中运行修改强>
PHP 5.4上添加了new feature:
已添加实例化的类成员访问权限,例如
(new Foo)->bar()
。
<强> EDIT2 强>
PHP feature RFC提出了两套语法(带有&amp;无括号),它们都在RFC中实现,但只有一套已经发货。我找不到解释决定的链接。
让我们看看RFC中的无括号语法示例:
new foo->bar()
应该被理解为(new foo)->bar()
new $foo()->bar
应该被理解为(new $foo())->bar
new $bar->y()->x
应理解为 (new ($bar->y)())->x
我认为无法发布无括号语法,因为它提出的解析优先级不是很直观(很难用眼睛看),如第3个例子所示。