Poucos meses depois de o PHP completar 25 anos, sua versão 8.0 acaba de ser lançada. PHP continua a ser a linguagem de programação mais amplamente usada na Internet quando se trata de gerar páginas da Web dinâmicas (79% delas), apesar da força de tecnologias como Node.js ou ASP.NET.
A versão anterior do PHP 7.4 (que continuará recebendo suporte até 6 de dezembro de 2021) trouxe notáveis melhorias de desempenho. Aliás, este é um item em que a versão 8.0 também terá destaque. No entanto, isso vem acompanhado de muitas outras novidades.
Compilador JIT
Sem dúvida, a principal novidade do PHP 8 é a introdução do compilador JIT (Just in Time) , que permitirá a você compilar certas partes do código na hora, em tempo de execução. Esta funcionalidade, que estava para ser incluída na versão 7.4, está em desenvolvimento há anos e representa uma grande mudança para o ecossistema PHP.
Quando você atualiza sua instalação atual do PHP, o compilador JIT aparecerá desabilitado por padrão. Entretanto, isso pode ser habilitado no arquivo php.ini, permitindo que o código nativo dos arquivos PHP sejam armazenados em uma região adicional da memória compartilhada OPcache.
A verdade é que isso, ao invés de beneficiar aplicações web tipicamente vinculadas ao PHP (como, por exemplo, Wordpress), o que faz é antes de tudo abrir novas possibilidades ao PHP como linguagem de programação, permitindo a utilização como aprendizado de máquina.
PHP 8.0 já está disponível com um compilador JIT e muitos novos recursos
O PHP 8 também incorpora várias mudanças pequenas, mas relevantes no nível sintático, como:
- A introdução de argumentos com nome, o que dispensa combinar a ordem dos parâmetros com a lista dos métodos usados.
- Propagação automática de propriedades: atualmente, quando queremos definir uma propriedade em PHP, somos forçados a repeti-la até três vezes antes de começar a usá-la. Porém, esse novo recurso nos permite reduzir significativamente a quantidade de código usado:
- Suporte para union types: Antes do PHP 8, só podíamos especificar tipos de união usando anotações PHPdoc, mas a nova versão adicionará suporte para tipos de união em assinaturas de função, economizando um pouco de código novamente.
- Match expression: o PHP incorpora uma nova expressão de correspondência semelhante a switch, mas com semântica mais segura, bem como a capacidade de retornar valores.
- Novo operador nullsafe: Atualmente, quando queríamos verificar no PHP se um getter não retornava null , fomos forçados a aninhar ifs sucessivos . Mas a partir de agora, o primeiro getter que retorna nulo abortará a execução de toda a string:
- Throw expression: Até agora, no PHP, throw era uma declaração, então não era possível usá-lo em locais onde apenas o uso de uma expressão era permitido. A partir de agora, porém, será considerada uma expressão.
Veja mais detalhes neste anúncio de lançamento.