"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 o PHP 5.2 não permitiu métodos de classe estáticos abstratos?

Por que o PHP 5.2 não permitiu métodos de classe estáticos abstratos?

Publicado em 2024-11-14
Navegar:672

Why Did PHP 5.2 Disallow Abstract Static Class Methods?

PHP 5.2 Strict Mode: Por que a proibição de métodos de classes estáticas abstratas?

No PHP 5.2, habilitar avisos estritos pode acionar um aviso familiar : "A função estática não deve ser abstrata". Este aviso decorre de uma mudança introduzida no PHP 5.2, que não permite métodos de classe estáticos abstratos.

O motivo: uma supervisão histórica

PHP 5.2 inicialmente não tinha ligações estáticas tardias, tornando inúteis funções estáticas abstratas. Como a palavra-chave self em métodos estáticos abstratos se referia à classe pai, e não à classe filha na qual o método foi invocado, tais métodos não tinham significado prático. Assim, o aviso tinha como objetivo capturar e prevenir possíveis erros de codificação. métodos estáticos de classes filhas a serem chamados a partir de métodos pais usando a palavra-chave static. Isso removeu a barreira técnica que tornava inúteis os métodos estáticos abstratos. No entanto, o aviso persistiu no PHP 5.2 com base em um argumento fraco: que a exposição de métodos estáticos abstratos poderia resultar em métodos públicos quebrados.

Uma falsa percepção

A justificativa para o aviso foi falho. Métodos estáticos abstratos podem coexistir com ligações estáticas tardias, fornecendo um caso de uso válido para invocar métodos estáticos de classes filhas a partir de métodos pai.

Confusão e uma resposta imprecisa

A O relatório de bug do PHP solicitando a remoção do aviso devido à adição de ligações estáticas tardias recebeu uma resposta desdenhosa de Rasmus Lerdorf. Ele afirmou erroneamente que métodos estáticos abstratos com ligações estáticas tardias eram funcionais, o que era incorreto, pois ainda acionavam o aviso. Essa confusão e falta de clareza levaram à persistência do aviso.

A Resolução no PHP 7

Felizmente, o PHP 7 finalmente corrigiu esse problema, reclassificando este aviso a um mero aviso. Com a introdução do PHP 7, os métodos estáticos abstratos são totalmente suportados e podem ser usados ​​com segurança sem disparar nenhum aviso.

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