PHP 8.1 führt eine Verhaltensänderung für Methodenrückgabetypen ein. In früheren Versionen konnten Sie eine Methode definieren, ohne einen Rückgabetyp anzugeben. Allerdings erfordert PHP 8.1 jetzt standardmäßig Rückgabetypen für Methoden, die deklariert oder von Schnittstellen geerbt werden. Diese Änderung zielt darauf ab, die Typsicherheit zu verbessern und sicherzustellen, dass Rückgabewerte mit Schnittstellenverträgen übereinstimmen.
Wenn ein Rückgabetyp zu einer zuvor untypisierten Methode hinzugefügt wird, prüft PHP 8.1, ob der Typ des Rückgabewerts mit der deklarierten Rückgabe übereinstimmt Typ. Wenn Sie beispielsweise eine Methode in einer Schnittstelle haben, die wie folgt definiert ist:
<code class="php">interface Countable { public function count(): int; }</code>
Und eine Klasse, die Countable implementiert:
<code class="php">class Example implements Countable { public function count() { return 42; } }</code>
PHP 8.1 löst aufgrund des Rückgabewerts einen Verfallshinweis aus wird nicht explizit als Ganzzahl typisiert, was der Schnittstellendefinition widerspricht.
Um dieses Problem zu beheben, gibt es zwei Hauptoptionen:
<code class="php">class Example implements Countable { public function count(): int { return 42; } }</code>
<code class="php">class Example implements Countable { #[\ReturnTypeWillChange] public function count() { return 42; } }</code>
Es ist wichtig zu beachten, dass PHP 9.0 beabsichtigt, Rückgabetypen zu erzwingen, wodurch die Verwendung von #[ReturnTypeWillChange] unnötig wird. Daher wird empfohlen, Ihren Code schrittweise zu migrieren, um Rückgabetypen explizit anzugeben und die Verwendung des Attributs nach Möglichkeit zu entfernen.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit nicht übereinstimmenden Rückgabetypen in PHP 8.1 um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!