【问题标题】:PHP arrow / method call operator ("->") precedencePHP箭头/方法调用运算符(“->”)优先级
【发布时间】:2020-08-19 22:19:00
【问题描述】:

我想要一份参考资料,明确说明 PHP 的箭头/方法调用运算符 (->) 在运算符绑定顺序方面的位置。

不幸的是,authoritative PHP manual page on 运算符优先级没有列出它。

某人可能会怀疑这是否会引发异常的示例,因为 $price 首先被强制转换为 string,然后才尝试调用 ->times() 方法:

return (string) $price->times($quantity);

在回答中,请说明PHP版本之间是否有任何变化。

奖励:静态调用 (::) 运算符的优先级是否与 -> 相同?

【问题讨论】:

    标签: php operator-precedence


    【解决方案1】:

    $foo->bar(...)PHP's grammar 中归类为member-call-expression

    这是callable-variable的一种形式,它本身就是variable的一种形式。本质上,对对象上的成员函数的调用与任何其他“原始”变量具有相同的优先级 - $foo->bar(...)$foo 应该由编译器同等对待。两者都不是“运算符”,因此它们不适合与您链接的手册页中列出的层次结构相同的层次结构。

    对于您的额外问题,:: 被归类为 scoped-call-expression,具有相同的“优先级”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-10
      • 2020-03-22
      • 2013-07-27
      • 2018-04-02
      • 2019-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多