statischer Rückgabetyp in PHP 7-Schnittstellen

Warum ist es in PHP 7 nicht möglich, eine Schnittstelle mit einem @ zu deklarierstatic Rückgabetyp?

Sagen wir, ich habe die folgenden Klassen:

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

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

Ich möchte den Rückgabetyp des @ erzwingplus() Methode zustatic, das ist

BigInteger::plus() muss ein @ zurückgebBigIntegerBigDecimal::plus() muss ein @ zurückgebBigDecimal

Ich kann die Schnittstelle folgendermaßen deklarieren:

public function plus(BigNumber $that) : BigNumber;

Aber das erzwingt das oben nicht. Was ich gerne machen würde ist:

public function plus(BigNumber $that) : static;

Aber PHP 7 ist bisher nicht zufrieden damit:

PHP Parse-Fehler: Syntaxfehler, unerwartetes 'statisches' (T_STATIC)

Gibt es einen bestimmten Grund dafür, oder ist dies ein Fehler, der gemeldet werden sollte?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage