为什么使用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)
我相信这是因为翻译解析了这个,
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)
不明白.希望能帮助到你.