为什么在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对此并不满意:
是否有特定原因,还是应该报告此错误?
最佳答案
2020年更新
PHP 8中的静态返回类型will be introduced。