PHP 8.1 introduit un changement de comportement pour les types de retour de méthode. Dans les versions précédentes, vous pouviez définir une méthode sans spécifier de type de retour. Cependant, PHP 8.1 exige désormais par défaut des types de retour pour les méthodes déclarées ou héritées des interfaces. Ce changement vise à améliorer la sécurité des types et à garantir que les valeurs de retour s'alignent sur les contrats d'interface.
Lorsqu'un type de retour est ajouté à une méthode précédemment non typée, PHP 8.1 vérifie si le type de la valeur de retour est conforme au retour déclaré. taper. Par exemple, si vous avez une méthode dans une interface définie comme :
<code class="php">interface Countable { public function count(): int; }</code>
Et une classe qui implémente Countable :
<code class="php">class Example implements Countable { public function count() { return 42; } }</code>
PHP 8.1 générera un avis de dépréciation car la valeur de retour n'est pas explicitement saisi sous forme d'entier, ce qui contredit la définition de l'interface.
Pour résoudre ce problème, il existe deux options principales :
<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>
Il est important de noter que PHP 9.0 a l'intention d'imposer les types de retour, rendant l'utilisation de #[ReturnTypeWillChange] inutile. Par conséquent, il est recommandé de migrer progressivement votre code pour spécifier explicitement les types de retour et supprimer l'utilisation de l'attribut lorsque cela est possible.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!