O PHP 8, linguagem de programação utilizada pelos sites WordPress, tem previsão de lançamento em 26 de novembro de 2020. Como a versão mais recente do PHP oferece novos recursos que os desenvolvedores acharão úteis e melhorias que prometem aumentar muito a segurança e o desempenho a longo prazo. Ele também remove totalmente uma série de funções anteriormente obsoletas. O PHP 8 é uma grande mudança em relação às versões anteriores.
Neste artigos, esperamos fornecer informações detalhando o que isso significa para os utilizadores de sites WordPress, incluído ações a serem tomadas.
Devo atualizar imediatamente?
Não. A próxima versão principal do WordPress 5.6 é destinada a ser “beta compatível com PHP8” de acordo com o bate-papo dev WordPress de 18 de novembro. Isso significa que a maioria das funcionalidades básicas do WordPress funcionará, mas bugs inesperados ainda podem ocorrer por algum tempo, mesmo sem a presença de plug-ins ou temas adicionais. O WordPress solicitou testes adicionais com o PHP 8 para encontrar e corrigir o máximo possível de bugs restantes.
Um grande número de plug-ins e temas do WordPress não serão imediatamente compatíveis com o PHP 8. Aqueles que não apresentam erros fatais durante o uso normal podem ainda mostrar um comportamento inesperado por algum tempo.
Que mudanças significativas isso inclui?
Alguns desenvolvedores há muito argumentam que o PHP é inseguro por padrão. Embora isso esteja em debate, é verdade que as versões do PHP anteriores ao PHP 8 são mais tolerantes a falhas e tentam muito garantir que o código seja executado mesmo que pequenos erros estejam presentes.
PHP 8 usa uma interpretação muito mais rígida do que as versões anteriores. Muitas funções integradas agora são mais exigentes quanto à entrada que aceitam, e o próprio PHP 8 é mais rigoroso sobre como a entrada é passada para as funções. Problemas que antes resultavam em “notices” agora resultam em “warnings”, e problemas que antes resultavam em “warnings” resultam em “errors”.
Em outras palavras, o PHP 8 não é tão tolerante quanto as versões anteriores. Não será tão difícil fazer o código funcionar, aconteça o que acontecer.
Algumas funções e recursos que estavam obsoletos no PHP 7.x foram completamente removidos. Esses incluem:
$php_errormsg
variablecreate_function()
functionmbstring.func_overload
ini directivereal
typeallow_url_include
ini directiverestore_include_path()
functioneach()
function
Embora a maioria deles não seja mais amplamente usada, identificamos que create_function ainda é usada em mais de 5.500 plug-ins do WordPress, incluindo plug-ins extremamente populares com milhões de instalações. Em alguns casos, o uso dessas funções obsoletas pode ter como objetivo a compatibilidade com versões anteriores do PHP. Muitos plug-ins, entretanto, precisarão de extensa reprogramação conforme o PHP 8 se torna mais utilizado.
Muitos plug-ins e temas também dependem fortemente de bibliotecas de terceiros. Os desenvolvedores do WordPress podem precisar esperar até que sejam atualizados para compatibilidade. Se essas bibliotecas não forem mantidas ou atualizadas para compatibilidade com o PHP 8, pode ser necessário bifurcar essas bibliotecas, encontrar alternativas ou até mesmo reescrever plug-ins e temas do zero.
Para obter informações mais detalhadas sobre o que mudou, nossos amigos da Yoast produziram um excelente relatório de compatibilidade destinado a desenvolvedores que buscam garantir que seu software seja compatível.
Que preocupações de segurança existem?
PHP permite algo chamado “Type Juggling”. Isso significa que ele pode tratar strings contendo números da mesma maneira que trata inteiros ou flutuantes, e pode realizar cálculos matemáticos e fazer comparações entre esses diferentes tipos, desde que o operador de comparação flexível ==seja usado em vez do operador de comparação estrita ===. Para desenvolvedores, o Type Juggling pode ser muito útil e economizar tempo ao escrever código, mas às vezes pode levar a um comportamento incomum.
Um exemplo clássico de como o malabarismo desse tipo pode causar problemas é que a comparação 0==”blah”retornará true. O PHP 8 corrige esse tipo de comportamento para que essas e outras comparações semelhantes (por exemplo, 0==”0blah”) retornem false.
Em geral, isso realmente melhorará a segurança. Existem vários exploits que podem tirar proveito do comportamento de Type Juggling do PHP para contornar cookies, nonce ou verificações de senha fora do padrão. No entanto, um grande número de plug-ins usa essas comparações soltas, às vezes para funções críticas. Na maioria dos casos, eles continuarão a funcionar corretamente ao usar o PHP 8, mas alguns deles podem realmente depender de um comportamento incorreto para funcionar corretamente. Em algumas raras circunstâncias, isso pode abrir novas brechas de segurança.
O ônus de atualizar o código para compatibilidade com o PHP 8 pode ser demais para alguns desenvolvedores, e muitos plug-ins e temas podem acabar abandonados, embora seja menos provável que isso aconteça para plug-ins e temas com uma grande base de instalação. Quaisquer problemas de segurança nesses plug-ins e temas abandonados não seriam corrigidos, o que poderia ser desastroso.
Da mesma forma, muitos sites podem permanecer em uma versão insegura do PHP para manter seus plug-ins legados em execução.
Por fim, certas tipos de malware contam com funções obsoletas, bem como com a tolerância a falhas do PHP, a fim de ofuscar suas intenções. Esses tipos deixarão de funcionar ou se tornarão mais perceptíveis em um ambiente PHP 8, mas os autores de malware se adaptarão com o tempo.
Que mudanças de desempenho estão por vir?
Um recurso potencialmente interessante que chega ao PHP 8 é a compilação JIT, ou “Just In Time”. PHP é uma linguagem interpretada, o que significa que é traduzida em código de máquina à medida que é executada. O JIT rastreia o código usado com frequência e tenta otimizar a tradução do código de máquina para que possa ser reutilizado. Isso pode resultar em uma grande melhoria de desempenho para funcionalidades específicas.
A adição de JIT a outras linguagens, como JavaScript, historicamente levou a uma explosão de novos aplicativos. Por exemplo, máquinas virtuais rodando em JavaScript seriam inimagináveis nos primeiros dias da web. Certas tarefas que no passado exigiriam a instalação de um módulo no servidor se tornarão práticas com o uso de bibliotecas PHP puras.
Por enquanto, no entanto, a melhoria real de desempenho para aplicativos da web como o WordPress é mínima e levará muito tempo até que o usuário ou desenvolvedor comum do WordPress obtenha os benefícios desse novo recurso.
Embora existam muitos outros novos recursos para tornar a vida dos desenvolvedores mais fácil, é improvável que eles sejam usados em plug-ins e temas WordPress em um futuro próximo, já que a maioria quebraria a compatibilidade com versões anteriores do PHP ainda em uso por muitos sites WordPress .
Quanto tempo os desenvolvedores têm para atualizar?
Cada versão do PHP tem um ciclo de vida de 2 anos durante o qual os bugs são corrigidos e um ano adicional durante o qual os problemas de segurança são corrigidos. O PHP 7.4 foi lançado em novembro de 2019. Como a versão final do PHP 7, isso significa que bugs no PHP 7.4 serão corrigidos até novembro de 2021, e os problemas de segurança serão corrigidos até novembro de 2022, quando chegará ao seu “ Fim da vida”. Isso significa que novembro de 2022 pode ser considerado uma data de corte definitivo: todo o código PHP deve ser compatível com o PHP 8.0, no mínimo, a esta altura, ou corre o risco de ficar preso em uma versão potencialmente vulnerável do PHP.
Conclusão
A transição para o PHP 8 é uma das mudanças mais amplas e impactantes que a linguagem já viu. Embora valha a pena no longo prazo, os proprietários e desenvolvedores de sites do WordPress podem enfrentar uma difícil jornada no curto prazo. Se você é proprietário de um site, comece a observar quais de seus plug-ins e temas estão sendo atualizados ou testados quanto à compatibilidade e faça um plano para substituir os que não estão. Se você é um desenvolvedor, comece a testar seu código e quaisquer dependências do PHP 8, se ainda não for, e comece a fazer um plano para bifurcar ou substituir quaisquer bibliotecas que não estejam sendo atualizadas. O ecossistema WordPress passou por transições difíceis no passado, e nossa comunidade de código aberto sempre cresceu e se adaptou.
Fonte: https://www.wordfence.com/blog/2020/11/php-8-what-wordpress-users-need-to-know/