(PHP 8 >= 8.1.0)
A partir do PHP 8.1.0, foi iniciada uma fase provisória de transição para declarações de tipo de retorno para métodos de classe internos.
A maioria dos métodos internos não finais agora requerem que os métodos substitutos declarem um tipo de retorno compatível. Caso contrário, um aviso de descontinuação é emitido durante a validação da herança, alertando que a assinatura viola as regras de covariância.
Em uma futura versão do PHP, a verificação da assinatura do método se tornará rigorosa, e incompatibilidades causarão um erro fatal.
Caso o tipo de retorno não possa ser declarado para um método substituto devido
a preocupação com compatibilidade entre versões do PHP, ou se o método substituto declara
um tipo de retorno incompatível, um atributo #[\ReturnTypeWillChange]
pode ser adicionado para silenciar o aviso de descontinuação.
Ao substituir métodos definidos em classes definidas pelo usuário, os tipos de retorno são verificados rigorosamente. Um erro fatal é emitido em caso de incompatibilidade, mesmo que o método substituto esteja marcado com o atributo.
O atributo ReturnTypeWillChange suprime os avisos de descontinuação somente durante a fase de tipo de retorno provisório. Assim que a verificação de tipo estrita for aplicada, o atributo deixará de funcionar e uma incompatibilidade na assinatura do método substituto de uma classe interna causará um erro fatal.