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.
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