为什么使用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/