"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como lidar com conflitos de tipo de retorno no PHP 8.1?

Como lidar com conflitos de tipo de retorno no PHP 8.1?

Publicado em 17/11/2024
Navegar:661

How to Handle Return Type Conflicts in PHP 8.1?

Referência: Conflito de tipo de retorno vs. #[\ReturnTypeWillChange] Atributo

Contexto:
No PHP 8.1, especificando tipos de retorno para métodos se torna mais predominante, levando a conflitos com implementações existentes.

Problema:
Quando o tipo de retorno de um método muda de um tipo compatível para um tipo incompatível ou não é especificado, a seguinte descontinuação aparece um aviso:

Deprecated: Return type of [Method Name] should either be compatible with ..., or the #[\ReturnTypeWillChange] attribute should be used...

Implicações da covariância do tipo de retorno:
PHP 7.0 introduziu tipos de retorno, garantindo um comportamento consistente para chamar código com base no contrato especificado. As classes de extensão ou implementação devem manter tipos de retorno iguais ou mais específicos.

Antecedentes da depreciação:
Com a adição de tipos de união no PHP 8.0, funções e métodos internos ganharam tipo de retorno especificações. No entanto, impor esses tipos quebraria a compatibilidade com versões anteriores. Em vez disso, um aviso de descontinuação foi introduzido para alterações provisórias.

Finalidade do #[\ReturnTypeWillChange] Atributo:
Este atributo indica uma alteração planejada no tipo de retorno. O PHP 8.1 ignora o aviso de descontinuação para métodos marcados com este atributo, permitindo suporte para versões mais antigas do PHP.

O que fazer:

  1. Identifique o método mencionado em o aviso de descontinuação e o tipo de retorno esperado.
  2. Se possível, altere o tipo de retorno do método para corresponder ao tipo esperado.
  3. Se necessário, suprima temporariamente o aviso de descontinuação adicionando o #[ Atributo \ReturnTypeWillChange].

Nota: Tipos de retorno forçados são prováveis ​​no PHP 9.0, então planeje abordar os atributos #[\ReturnTypeWillChange] adequadamente.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3