"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 > Por que substituir parâmetros de método em PHP viola padrões rígidos?

Por que substituir parâmetros de método em PHP viola padrões rígidos?

Publicado em 2024-11-06
Navegar:687

Why Does Overriding Method Parameters in PHP Violate Strict Standards?

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:

  • Sobrecarga de funções: Defina funções separadas com o mesmo nome, mas assinaturas diferentes. Isso permite sobrecarregar a mesma função com múltiplas definições.
  • Herança: Crie uma nova classe filha que estenda a classe pai e adicione métodos adicionais com assinaturas específicas.
  • Composição: Use composição em vez de herança para combinar a funcionalidade de diferentes classes sem modificar seus métodos.

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.

Declaração de lançamento Este artigo foi reimpresso em: 1729202656 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
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