Substituindo parâmetros de método em PHP: uma violação de padrões rígidos
Na programação orientada a objetos, o Princípio de Substituição de Liskov (LSP) determina que os objetos de um subtipo podem substituir seus objetos pais sem alterar o comportamento do programa. No entanto, em PHP, substituir um método com uma assinatura de parâmetro diferente é considerado uma violação de padrões rígidos.
Por que isso é uma violação?
PHP é uma violação de tipo fraco? linguagem, o que significa que o compilador não pode determinar o tipo exato de uma variável em tempo de compilação. Isso significa que quando uma classe filha substitui um método de classe pai, o compilador não pode verificar se a nova assinatura é compatível com a original.
Como resultado, o compilador emite um aviso padrão estrito, sinalizando um problema potencial que pode causar a falha do programa.
Considere o seguinte exemplo:
class Foo
{
public function bar(array $bar) {}
}
class Baz extends Foo
{
public function bar($bar) {}
}
Neste código, o método Baz::bar() substitui o método Foo::bar() por uma assinatura diferente. O compilador não pode determinar se a nova assinatura é compatível com a original, potencialmente causando problemas no futuro.
Alternativas para substituir parâmetros de método
Em vez de substituir métodos por diferentes assinaturas, existem abordagens alternativas para alcançar a funcionalidade desejada:
Seguindo essas alternativas, você pode evitar a violação de padrões rígidos e ao mesmo tempo alcançar a funcionalidade desejada em seu aplicativo PHP.
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