Depuis PHP 7.0, les types de retour pour les fonctions et les méthodes sont disponibles. Cela forme un contrat sur lequel d'autres codes peuvent s'appuyer.
Par exemple :
<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>
Lors de l'extension d'une classe, un type de retour plus spécifique peut être défini (covariance). Cependant, spécifier un type de retour différent ou aucun type de retour n'est pas autorisé.
L'ajout de types de retour à des classes ou interfaces existantes nécessite des modifications dans l'extension ou l'implémentation des classes. Avec l'introduction des types d'union dans PHP 8.0, les types de retour ont été documentés mais pas appliqués comme des erreurs. Au lieu de cela, un avis de dépréciation a été ajouté.
Un code conflictuel qui doit prendre en charge plusieurs versions de PHP et des types de retour antérieurs à la version 8.0 a conduit au développement du #[ReturnTypeWillChange ] attribut. Lorsqu'il est ajouté à une méthode, il supprime l'avis de dépréciation dans PHP 8.1. Cela donne le temps de rectifier le problème avant PHP 9.0, où les types de retour internes peuvent être appliqués.
Décidez de votre plan d'action :
S'il est sécuritaire de modifier le type de retour :
Si vous devez prendre en charge des versions PHP plus anciennes ou du code non mis à jour :
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!