(PHP 8 >= 8.1.0)
A partir de PHP 8.1.0, comenzó una fase tentativa de transición hacia las declaraciones de tipo de retorno para los métodos de las clases internas.
La mayoría de los métodos internos no finales requieren ahora que los métodos sobrescritos declaren un tipo de retorno compatible. En caso contrario, se emite un aviso de deprecación durante la validación de herencia, advirtiendo de que la firma infringe las reglas de covarianza.
En una versión futura de PHP, la comprobación de las firmas de los métodos será estricta, y las discrepancias provocarán un error fatal.
En caso de que el tipo de retorno no pueda declararse para un método sobrescrito debido a
preocupaciones de compatibilidad entre versiones de PHP, o cuando el método sobrescrito declare
un tipo de retorno incompatible, se puede añadir un atributo
#[\ReturnTypeWillChange] para silenciar el aviso de deprecación.
Al sobrescribir métodos definidos en clases definidas por el usuario, los tipos de retorno se comprueban de forma estricta. Se emite un error fatal en caso de discrepancia, incluso si el método sobrescrito está marcado con el atributo.
El atributo ReturnTypeWillChange suprime los avisos de deprecación únicamente durante la fase de tipo de retorno tentativo. Una vez impuesta la comprobación estricta de tipos, el atributo dejará de funcionar y una discrepancia en la firma del método sobrescrito de una clase interna provocará un error fatal.