php - PHP 7 接口(interface)中的静态返回类型

标签 php interface php-7

为什么在 PHP 7 中无法声明具有 static 返回类型的接口(interface)?

假设我有以下类(class):

interface BigNumber {
    /**
     * @param BigNumber $that
     *
     * @return static
     */
    public function plus(BigNumber $that);
}

class BigInteger implements BigNumber { ... }
class BigDecimal implements BigNumber { ... }

我想强制plus()方法的返回类型为static,即:

  • BigInteger::plus() 必须返回一个 BigInteger
  • BigDecimal::plus() 必须返回一个 BigDecimal

我可以通过以下方式声明接口(interface):

public function plus(BigNumber $that) : BigNumber;

但这并不能强制执行上述内容。我想做的是:

public function plus(BigNumber $that) : static;

但迄今为止,PHP 7 对此并不满意:

PHP Parse error: syntax error, unexpected 'static' (T_STATIC)

这是否有特定原因,或者这是一个应该报告的错误?

最佳答案

2020年更新

静态返回类型 have been introduced在 PHP 8 中。

关于php - PHP 7 接口(interface)中的静态返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30952876/

相关文章:

Objective-C @interface/指针澄清

java - 类内的 main() 与接口(interface)内的 main()

在 PHP 7 中不鼓励使用 Eval

php7 无效返回类型不起作用?

php - 在 DOMPDF 中自定义宽度和高度

php - Preg-replace - 替换除域及其子域之外的所有 URL

php - 外部样式表不显示任何样式,但内部样式表显示

java - 强制执行接口(interface)实现以便使用另一个类

php - 在 EC2 上为 S3 托管网站运行 PHP 联系表单

php - Apache 处理 PHP 数组标记作为结束标记