static
PHP 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()
を返す必要がありますBigInteger
BigDecimal::plus()
を返す必要がありますBigDecimal
次の方法でインターフェイスを宣言できます。
public function plus(BigNumber $that) : BigNumber;
しかし、それは上記を強制しません。私がやりたいことは次のとおりです。
public function plus(BigNumber $that) : static;
しかし、PHP 7 は今のところ満足していません。
PHP 解析エラー: 構文エラー、予期しない「静的」(T_STATIC)
これには特定の理由がありますか、それとも報告すべきバグですか?