PHP 箭头/方法调用运算符(“->”)优先级
PHP arrow / method call operator ("->") precedence
我想要一个参考,清楚地说明 PHP 的箭头/方法调用运算符 (->
) 在运算符绑定顺序方面的位置。
不幸的是,authoritative PHP manual page 运算符优先级没有列出它。
有人可能怀疑这是否会引发异常的示例,因为 $price
首先被转换为 string
,然后才尝试调用方法 ->times()
:
return (string) $price->times($quantity);
在回答中,请注明PHP版本之间是否有任何变化。
奖励:静态调用 (::
) 运算符是否具有与 ->
相同的优先级?
$foo->bar(...)
在 PHP's grammar 中分类为 成员调用表达式.
这是可调用变量的一种形式,它本身是变量的一种形式。本质上,对对象上的成员函数的调用与任何其他 "raw" 变量具有相同的优先级 - $foo->bar(...)
并且 $foo
应该被编译器相同地对待。 "operator" 也不是,因此它们不属于与您链接的手册页中列出的层次结构相同的层次结构。
对于您的奖励问题,::
被归类为 scoped-call-expression,它具有相同的 "precedence".
我想要一个参考,清楚地说明 PHP 的箭头/方法调用运算符 (->
) 在运算符绑定顺序方面的位置。
不幸的是,authoritative PHP manual page 运算符优先级没有列出它。
有人可能怀疑这是否会引发异常的示例,因为 $price
首先被转换为 string
,然后才尝试调用方法 ->times()
:
return (string) $price->times($quantity);
在回答中,请注明PHP版本之间是否有任何变化。
奖励:静态调用 (::
) 运算符是否具有与 ->
相同的优先级?
$foo->bar(...)
在 PHP's grammar 中分类为 成员调用表达式.
这是可调用变量的一种形式,它本身是变量的一种形式。本质上,对对象上的成员函数的调用与任何其他 "raw" 变量具有相同的优先级 - $foo->bar(...)
并且 $foo
应该被编译器相同地对待。 "operator" 也不是,因此它们不属于与您链接的手册页中列出的层次结构相同的层次结构。
对于您的奖励问题,::
被归类为 scoped-call-expression,它具有相同的 "precedence".