为什么构造函数链中需要括号?

Mar*_*Fox 9 php chaining

为什么使用new关键字的表达式需要括号才能在链式执行中使用?例如,在AS3中,您不需要括号.在PHP中,这是解释器的风格辅助,还是有一个我不知道的更大的原因?它是执行优先级问题的顺序吗?

用PHP链接的构造函数

感谢这个问题用PHP中的对象函数调用链接构造函数我想出了如何...

对象定义

旁白:显然魔术方法__construct总是隐式返回$this,如果你明确地返回$this(或任何事情),就不会发生错误/警告/异常.

class Chihuahua
{
    private $food;

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

    function burp()
    {
        echo "$this->food burp!";
    }
}
Run Code Online (Sandbox Code Playgroud)

作品

(new Chihuahua('cake'))->burp();
Run Code Online (Sandbox Code Playgroud)

不起作用(但我希望它能)

new Chihuahua('cake')->burp();
Run Code Online (Sandbox Code Playgroud)

rae*_*ae1 8

我相信这是因为翻译解析了这个,

new (Chihuahua('cake')->burp());
Run Code Online (Sandbox Code Playgroud)

代替,

(new Chihuahua('cake'))->burp();
Run Code Online (Sandbox Code Playgroud)

因为->有比new运营商更高的偏好.

因为这个,给你一个错误,

Chihuahua('cake')->burp()
Run Code Online (Sandbox Code Playgroud)

不明白.希望能帮助到你.