Heim >Backend-Entwicklung >PHP-Tutorial >Wie gehe ich mit Hinweisen zur Ablehnung von Rückgabetypen in PHP um?

Wie gehe ich mit Hinweisen zur Ablehnung von Rückgabetypen in PHP um?

Linda Hamilton
Linda HamiltonOriginal
2024-11-01 03:38:27544Durchsuche

How Should I Handle Return Type Deprecation Notices in PHP?

Referenz: Der Rückgabetyp von ... sollte entweder mit ... kompatibel sein oder das Attribut #[ReturnTypeWillChange] sollte verwendet werden

Hintergrund: Rückgabetypen und Kovarianz

Seit PHP 7.0 sind Rückgabetypen für Funktionen und Methoden verfügbar. Dies bildet einen Vertrag, auf den sich anderer Code verlassen kann.

Zum Beispiel:

<code class="php">class Base {
    public function getList(): Iterator {
       // ...
    }
}

// Calling code:
$foo = new Base();
var_dump($foo instanceOf Base); // true
var_dump($foo->getList() instanceOf Iterator); // true</code>

Beim Erweitern einer Klasse kann ein spezifischerer Rückgabetyp definiert werden (Kovarianz). Die Angabe eines anderen Rückgabetyps oder keinem Rückgabetyp ist jedoch nicht zulässig.

Abwärtskompatibilität und veraltet

Das Hinzufügen von Rückgabetypen zu vorhandenen Klassen oder Schnittstellen erfordert Änderungen beim Erweitern oder Implementieren von Klassen. Mit der Einführung von Union Types in PHP 8.0 wurden Rückgabetypen dokumentiert, aber nicht als Fehler erzwungen. Stattdessen wurde ein Verfallshinweis hinzugefügt.

Das Attribut #[ReturnTypeWillChange]

Widersprüchlicher Code, der mehrere PHP-Versionen und Rückgabetypen vor 8.0 unterstützen muss, führte zur Entwicklung des #[ReturnTypeWillChange ]-Attribut. Wenn es einer Methode hinzugefügt wird, unterdrückt es den Verfallshinweis in PHP 8.1. Dies gibt Zeit, das Problem vor PHP 9.0 zu beheben, wo möglicherweise interne Rückgabetypen erzwungen werden.

Lösung

  1. Identifizieren Sie die Methode und den richtigen Rückgabetyp aus der Abschreibungsmitteilung.
  2. Entscheiden Sie Ihre Vorgehensweise:

    • Warten Sie auf ein Bibliotheks- oder Erweiterungsupdate (keine Aktion erforderlich).
    • Überprüfen Sie, ob die Klasse bereits den richtigen Typ zurückgibt.
    • Bestimmen Sie, ob das Ändern des Rückgabetyps für Ihre Anwendung und die Erweiterung von Klassen sicher ist.
  3. Wenn es sicher ist, den Rückgabetyp zu ändern:

    • Fügen Sie den Rückgabetyp hinzu.
  4. Wenn Sie ältere PHP-Versionen oder nicht aktualisierten Code unterstützen müssen:

    • Fügen Sie das # hinzu [ReturnTypeWillChange]-Attribut vorübergehend.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit Hinweisen zur Ablehnung von Rückgabetypen in PHP um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn