在构造函数之后直接调用函数:new Object() - > callFunction()

时间:2013-09-18 13:18:16

标签: php function class constructor call

正如您在标题中看到的那样,我的编程背景是Java。在Java中你可以做这样的事情

new Object().callSomeMethod();

如果您只需要一次这个对象,则无需将创建的Object分配给变量,非常有用且清晰的编码。

现在在PHP中我尝试做同样的事情

new Object()->callSomeMethod();

但在这里我得到一个'解析错误:语法错误,意外' - >' (T_OBJECT_OPERATOR)”

有没有办法在PHP中执行此操作?

1 个答案:

答案 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个例子所示。