Comment dois-je gérer les avis de dépréciation du type de retour en PHP ?

Linda Hamilton
Libérer: 2024-11-01 03:38:27
original
541 Les gens l'ont consulté

How Should I Handle Return Type Deprecation Notices in PHP?

Référence : le type de retour de ... doit être compatible avec ..., ou l'attribut #[ReturnTypeWillChange] doit être utilisé

Arrière-plan : types de retour et covariance

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>
Copier après la connexion

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é.

Compatibilité ascendante et dépréciation

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é.

L'attribut #[ReturnTypeWillChange]

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.

Résolution

  1. Identifiez la méthode et corrigez le type de retour à partir de l'avis d'amortissement.
  2. Décidez de votre plan d'action :

    • Attendez une bibliothèque ou une extension mise à jour (aucune action requise).
    • Vérifiez si la classe renvoie déjà le type correct.
    • Déterminez si la modification du type de retour est sûre pour votre application et l'extension des classes.
  3. S'il est sécuritaire de modifier le type de retour :

    • Ajouter le retour tapez.
  4. Si vous devez prendre en charge des versions PHP plus anciennes ou du code non mis à jour :

    • Ajoutez temporairement l'attribut #[ReturnTypeWillChange].

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal