gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 12:29:46 24 4
gpt4 key购买 nike

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

new Object().callSomeMethod();

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

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

new Object()->callSomeMethod();

但在这里我收到“解析错误:语法错误,意外的‘->’(T_OBJECT_OPERATOR)”。

有没有办法在 PHP 中做到这一点?

最佳答案

(new Object())->callSomeMethod();

将在 PHP 5.4+ 中工作

编辑

这是一个new feature在 PHP 5.4 上添加:

Class member access on instantiation has been added, e.g. (new Foo)->bar().

EDIT2

PHP feature RFC提出了两套语法(带&不带括号),它们都在RFC中实现,但只交付了一套。我找不到解释该决定的链接。

让我们看一下 RFC 中的无括号语法示例:

  • new foo->bar() 应该读作 (new foo)->bar()
  • new $foo()->bar 应该读作 (new $foo())->bar
  • new $bar->y()->x 应该读作 (new ($bar->y)()) ->x

我认为无括号语法没有发布,因为它提出的解析优先级不是很直观(很难用眼睛理解),如第 3 个示例所示。

关于php - 构造函数后直接调用函数 : new Object()->callFunction(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18873341/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com