staticPHP 7 で、戻り値の型を持つインターフェイスを宣言できないのはなぜですか?
次のクラスがあるとします。
interface BigNumber {
/**
* @param BigNumber $that
*
* @return static
*/
public function plus(BigNumber $that);
}
class BigInteger implements BigNumber { ... }
class BigDecimal implements BigNumber { ... }
plus()メソッドの戻り値の型を に強制したいstatic、つまり:
BigInteger::plus()を返す必要がありますBigIntegerBigDecimal::plus()を返す必要がありますBigDecimal
次の方法でインターフェイスを宣言できます。
public function plus(BigNumber $that) : BigNumber;
しかし、それは上記を強制しません。私がやりたいことは次のとおりです。
public function plus(BigNumber $that) : static;
しかし、PHP 7 は今のところ満足していません。
PHP 解析エラー: 構文エラー、予期しない「静的」(T_STATIC)
これには特定の理由がありますか、それとも報告すべきバグですか?