(PHP 8 >= 8.1.0)
À partir de PHP 8.1.0, une phase provisoire de transition vers les déclarations de type de retour pour les méthodes des classes internes a débuté.
La plupart des méthodes internes non finales exigent désormais que les méthodes de surcharge déclarent un type de retour compatible. Dans le cas contraire, un avis d'obsolescence est émis lors de la validation de l'héritage, avertissant que la signature enfreint les règles de covariance.
Dans une version future de PHP, la vérification des signatures de méthodes deviendra stricte, et les incompatibilités provoqueront une erreur fatale.
Dans le cas où le type de retour ne peut pas être déclaré pour une méthode de surcharge en raison de
problèmes de compatibilité entre les versions de PHP, ou lorsque la méthode de surcharge déclare
un type de retour incompatible, un attribut #[\ReturnTypeWillChange] peut être ajouté
pour taire l'avis d'obsolescence.
Lors de la surcharge de méthodes définies dans des classes définies par l'utilisateur, les types de retour sont vérifiés strictement. Une erreur fatale est émise en cas d'incompatibilité, même si la méthode de surcharge est marquée avec l'attribut.
L'attribut ReturnTypeWillChange supprime les avis d'obsolescence uniquement durant la phase de type de retour provisoire. Une fois la vérification stricte des types imposée, l'attribut cessera de fonctionner et une incompatibilité dans la signature de la méthode de surcharge d'une classe interne provoquera une erreur fatale.