PHP Básico

PHP 8 – Melhorias e o compilador JIT

O foi oficialmente lançado para o General Availability em 26 de novembro de 2020! Esta nova grande traz muitas otimizações e funcionalidades poderosas para linguagem.

Union types

Dada a natureza dinamicamente tipada do , existem muitos casos em que os tipos de união podem ser úteis. Os tipos de união são uma coleção de dois ou mais tipos que indicam que qualquer um deles pode ser usado.

Observe que void nunca pode fazer parte de um tipo de união, pois indica “nenhum valor de retorno”. Além disso, as uniões anuláveis ​​podem ser escritas usando |null ou usando o ? notação:

O operador nullsafe

Se você está familiarizado com o operador de coalescência nula, você já está familiarizado com suas deficiências: ele não funciona em chamadas de método. Em vez disso, você precisa de verificações intermediárias ou depende de auxiliares opcionais fornecidos por alguns frameworks:

Named arguments

Argumentos nomeados permitem que você passe valores para uma função, especificando o nome do valor, para que você não precise levar em consideração sua ordem, e também pode pular parâmetros opcionais!

Atributos

Atributos, comumente conhecidos como anotações em outras linguagens, oferecem uma maneira de adicionar metadados a classes, sem ter que analisar docblocks. Quanto a uma olhada rápida, aqui está um exemplo de como são os atributos, da RFC:

Constructor property promotion

Este RFC adiciona açúcar sintático para criar objetos de valor ou objetos de transferência de dados. Em vez de especificar propriedades de classe e um construtor para elas, o PHP agora pode combiná-las em uma.

É aqui que entra a extensão OPcache para jogar:

“OPcache melhora a performance do PHP ao armazenar bytecode de script pré-compilado na memória compartilhada, removendo assim a necessidade do PHP carregar e analisar scripts em cada solicitação”

Com OPcache habilitado, o intérprete PHP passa pelo processo de 4 etapas mencionado acima apenas quando o script é executado pela primeira vez. Como os bytecodes PHP são armazenados em memória compartilhada, eles estão imediatamente disponíveis como representação intermediária de baixo nível e podem ser executados na Zend VM imediatamente.

JIT – O compilador Just in Time

Mesmo que os opcodes sejam de baixo nível de representação intermediária, eles ainda têm que ser compilados em código de máquina. JIT “não introduz nenhuma forma adicional IR (Intermediate Representation)”, mas usa DynASM (Dynamic Assembler for code generation engines) para gerar código nativo diretamente do byte-código PHP.

Em resumo, o JIT traduz as partes quentes do código intermediário em código de máquina. Contornando a compilação, ele seria capaz de trazer melhorias consideráveis na performance e uso de memória.

Conclusão

Em resumo, o PHP 8 trouxe, sem sombra de dúvidas, melhorias na performance com JIT, novos recursos na estrutura e codificação da linguagem, no entanto, devemos deixar claro que atualizações futuras sempre surgem para corrigir bugs da nova versão, embora esta seja uma versão já estável.

Tags: PHPphp 8

Post Recentes

Por que devo sempre manter o Magento 2 atualizado?

Segurança: Atualizações frequentes geralmente incluem patches de segurança para corrigir vulnerabilidades identificadas. Ao manter o Magento atualizado, você reduz significativamente…

1 mês atrás

Adicionar uma mensagem de Alerta ou Aviso do Admin do Magento 2

Como adicionar uma mensagem de Alerta ou Aviso do Admin do Magento 2 Injete o Magento\Framework\Message\ManagerInterface no construtor da sua…

1 mês atrás

Exibir mensagens erro/sucesso da Classe: Magento\Framework\Message\ManagerInterface

Para exibir as mensagens adicionadas na classe Magento\Framework\Message\ManagerInterface em um arquivo .phtml, você pode usar o seguinte código: <?php $objectManager…

1 mês atrás

Exportar as categorias do Magento 2 em um XML

Para criar um script no Magento 2 que exporte as categorias para um arquivo XML com o nome da categoria,…

3 meses atrás

Colocar um video como Background utilizando HTML + CSS

Para definir um vídeo MP4 como plano de fundo em um <div> usando HTML e CSS, você pode seguir estas…

4 meses atrás

Desativar o “lastname” no Magento 2

Como desativar o "lastname" no Magento 2 e Adobe Commerce Desativando a obrigatoriedade do campo Execute a SQL abaixo diretamente…

4 meses atrás