我希望有一个参考,明确说明PHP的箭头/方法调用运算符(->
(在运算符绑定顺序方面的位置。
不幸的是,权威的PHP手册中没有列出操作员优先级
示例中,有人可能怀疑这是否会引发异常,因为首先将$price
强制转换为string
,然后才尝试方法调用->times()
:
return (string) $price->times($quantity);
在答案中,请指出PHP版本之间是否有任何变化。
附加:静态调用(::
(运算符的优先级是否与->
相同?
$foo->bar(...)
在PHP语法中被归类为成员调用表达式。
这是可调用变量的一种形式,它本身就是变量。从本质上讲,对对象上的成员函数的调用与任何其他"原始"变量具有相同的优先级——$foo->bar(...)
,编译器只应对$foo
进行相同的处理。两者都不是"运算符",因此它们与您链接的手册页面中列出的层次结构不在同一层次结构中。
对于您的奖励问题,::
被归类为范围的调用表达式,它具有相同的"优先级"。