Article image
João Matias
João Matias05/03/2022 18:59
Compartilhe

O Que Há de Novo no PHP 8

  • #PHP

PHP 8.0 é uma atualização importante da linguagem PHP.

Ela contém muitos novos recursos e otimizações, incluindo argumentos nomeados, união de tipos, atributos, promoção de propriedade do construtor, expressão match, operador nullsafe, JIT e melhorias no sistema de tipos, tratamento de erros e consistência.

PHP 8 foi lançado em 2020 e trouxe novas funcionalidades para a linguagem de programação que domina a web. Então, quais características e melhorias veio com o PHP 8? 

PHP JIT (Compilador Just in Time)

O recurso mais aclamado que vem com o PHP 8 é o compilador Just-in-time (JIT).

PHP 8 apresenta dois motores de compilação JIT. Tracing JIT, o mais promissor dos dois, mostra desempenho cerca de 3 vezes melhor em benchmarks sintéticos e melhoria de 1,5 a 2 vezes em alguns aplicativos específicos de longa execução. O desempenho típico das aplicações está no mesmo nível do PHP 7.4.

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

Argumentos nomeados

Especifique apenas os parâmetros obrigatórios, pulando os opcionais.

Os argumentos são independentes da ordem e autodocumentados.

Erros consistentes para tipos de dados em funções internas

Um grande problema para todos desenvolvedor é quando encontramos um erro. O PHP já podia ver os avisos de erros. Mas, esses avisos ainda são gerados de forma básica. Porém, no PHP 8.0, você já poderá encontrar avisos com explicações mais precisas.

Com certeza esse será um grande diferencial para os programadores, pois economizará muito tempo para solucionar problemas em meio as diversas linhas de código. Além de facilitar muito a vida de quem está aprendendo e iniciando na linguagem PHP.

União de tipos

Em vez de anotações PHPDoc para uma combinação de tipos, você pode usar declarações de união de tipos nativa que são validados em tempo de execução.

 A partir da versão PHP 8, você poderá utilizar os Union Types. Dessa forma, o PHP passará a ter suporte a vários tipos de dados em sua estrutura, e não apenas um único valor.

Você poderá aplicar a parâmetros de métodos e também no retorno de métodos de suas classes. 

Promoção de propriedade de construtor

Menos código boilerplate para definir e inicializar propriedades. A partir do PHP 8, parâmetros de construtores podem ser promovidos a uma propriedade do objeto. Isto é bastante comum quando parâmetros do construtor de serem informados em uma propriedade no construtor, sem nenhum processamento. Promoção de construtor fornece uma sintaxe reduzida para esse caso. 

Quanto um argumento de construtor incluir um modificador de visibilidade, o PHP interpretará como sendo uma propriedade de objeto e como um argumento do construtor, e assimilará o valor do argumento a uma propriedade de mesmo nome. O corpo do construtor pode estar vazio ou conter outras operações. Quaisquer operações serão executados após os valores dos argumentos serem definidos nas respectivas propriedades.

Outras mudanças e novidades do PHP 8

  • Verificações de tipo mais rígidas para operadores aritméticos / bit a bit
  • Validação de método abstrato em traits
  • Assinaturas corretas de métodos mágicos
  • Avisos de motor reclassificados
  • Erro fatal para assinaturas de método incompatíveis
  • O operador @ não silencia mais os erros fatais.
  • Herança com métodos privados
  • Tipo mixed
  • Tipo de retorno static
  • Tipagem de funções internas Discussão por email
  • Objetos opacos em vez de recursos para Curl, Gd, Sockets, OpenSSL, XMLWriter, e XML extensões
  • Outros ajustes e melhorias de sintaxe
  • Permitir vírgula no final da lista de parâmetros RFC e listas de uso em closures RFC
  • Catches sem variável na captura de exceção RFC
  • Ajustes de sintaxe para variáveis RFC
  • Tratamento de nomes de namespace como token único RFC
  • Throw como expressão RFC
  • Permitir ::class em objetos RFC
  • Novas classes, interfaces e funções
  • Classe Weak Map
Compartilhe
Comentários (0)