为什么使用new关键字的表达式需要括号才能在链式执行中使用? 例如,在AS3中,不需要括号。在PHP中,这是否是解释器的样式辅助工具?还是我不知道的更大原因?是执行优先顺序的问题吗?

PHP中的构造函数链接

多亏了Chaining a constructor with an object function call in PHP这个问题,我才知道如何...

对象定义

另外:显然,魔术方法__construct总是隐式返回$this,如果您显式返回$this(或与此相关的任何内容),则不会发生错误/警告/异常。

class Chihuahua
{
    private $food;

    function __construct( $food )
    {
        $this->food = $food;
    }

    function burp()
    {
        echo "$this->food burp!";
    }
}

作品
(new Chihuahua('cake'))->burp();

不起作用(但希望如此)
new Chihuahua('cake')->burp();

最佳答案

我相信是因为口译员对此进行了解析,

new (Chihuahua('cake')->burp());

代替,
(new Chihuahua('cake'))->burp();

因为->new运算符具有更高的首选项。

并给你一个错误,因为
Chihuahua('cake')->burp()

不了解。希望能帮助到你。

关于php - 为什么在构造函数链接中需要括号?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14077628/

10-11 22:10
查看更多