fbpx
PHP

PHP 8.1: fique por dentro das mudanças dessa nova versão

Uma grande atualização de uma linguagem de programação é sempre um grande evento no mundo do desenvolvimento de software e o destaque foi para o mês de novembro de 2021 — a data de lançamento do PHP 8.1.

Por que isso é importante? PHP está presente nos principais CMS, como WordPress, Joomla, Magento, OpenCart, Craft CMS, entre outros. Além disso, essa linguagem de programação de código aberto, independente de plataforma, poderosa, flexível, rápida, bem documentada e fácil de aprender é usada em sites sem nenhum CMS. No total, de acordo com as estatísticas da w3Techs, o PHP funciona em 78,8% dos sites cuja linguagem de programação do lado do servidor é conhecida.

As principais mudanças e otimizações na versão merecem uma boa visão geral, e é sobre isso que falamos neste artigo!

O que é PHP?

O PHP iniciou como um projeto modesto de código aberto que, ao longo do tempo, evoluiu conforme mais pessoas descobriram suas utilizações. A primeira versão foi lançada em 1994 por Rasmus Lerdorf, sendo crucial para um site responsivo.

A abreviatura PHP inicialmente significava Personal Homepage. Mas agora é um acrônimo recursivo para Hypertext Preprocessor — é recursivo no sentido de que a primeira palavra em si é uma abreviatura, portanto, o significado completo não segue a abreviatura.

A linguagem agora chegou em sua versão 8.1, lançada em novembro de 2021, como dissemos. De qualquer forma, a versão 7 continua sendo a mais usada.

O PHP é executado no motor Zend, que é a implementação mais popular. Existem também algumas outras implementações, como parrot, HPVM (Hip Hop Virtual Machine) e Hip Hop, criado pelo Facebook.

A linguagem é usada principalmente para fazer servidores web. Ela é executada no navegador e também pode ser executada na linha de comando. Portanto, se você não quiser apontar a saída do código no navegador, pode mostrá-la no terminal.

Quais são as vantagens do PHP?

O PHP tem algumas vantagens que o tornaram tão popular e é a linguagem preferida para servidores da web há mais de 15 anos. Aqui estão alguns dos benefícios da linguagem.

Plataforma cruzada

O PHP é independente de plataforma. Você não precisa ter um sistema operacional específico para usá-lo, porque ele roda em todas os sistemas, seja Mac, Windows ou Linux.

Código aberto

PHP é código aberto. O código original é disponibilizado para todos que desejam desenvolvê-lo. Esta é uma das razões pelas quais um de seus frameworks, o Laravel, é tão popular.

Fácil de aprender

A linguagem não é difícil de aprender para iniciantes. Você pode aprender muito se já tiver conhecimento de programação.

O PHP sincroniza com todos os bancos de dados

Você pode conectar facilmente o PHP a todos os bancos de dados, relacionais e não relacionais. Portanto, ele pode se conectar rapidamente ao MySQL, Postgress, MongoDB ou qualquer outro banco de dados.

Comunidade de apoio

PHP tem uma comunidade online de muito apoio. A documentação oficial fornece guias sobre como usar os recursos e você pode facilmente consertar seu problema enquanto estiver travado.

Quais os recursos que permaneceram na versão 8.1?

O PHP 8.1 veio com algumas otimizações de performance, mas nada que cause grande transformação comparado com a versão PHP 8.0.

Ou seja, ele permanece com a qualidade, clareza, transparência e eficiência ao desenvolvimento, além de conferir no SEO aos desenvolvedores a chance de construir sites e aplicativos melhores, mais rápidos e mais seguros.

Isso é obtido por meio de grandes melhorias de sintaxe, grandes mudanças de núcleo, atualizações significativas de API, várias correções de bugs, melhores abordagens para tratamento de erros e muito mais. Entenda as otimizações que continuam na versão PHP 8.1 logo abaixo.

JIT (Compilador Just-In-Time)

Esse é um fator que destaca na otimização — o compilador JIT do PHP 8.1 ao núcleo do PHP. Por exemplo, podemos considerar os resultados dos extensos testes de velocidade realizados pelo engenheiro de software Pedro Escudero com e sem JIT para diferentes versões do PHP. Ele descobriu uma melhoria de desempenho impressionante de 45% com o JIT Compiler.

Isso é especialmente útil para melhorar o desempenho de aplicativos com uso intenso da CPU. É muito útil para o PHP como para uma linguagem interpretada que tradicionalmente é lida linha por linha. Ao contrário, o PHP 8 JIT compila e armazena em cache algumas partes do código PHP durante o tempo de execução.

Essa compilação just-in-time também é conhecida como compilação dinâmica. O compilador JIT não é habilitado por padrão, mas você pode escolher habilitá-lo e configurar para obter os resultados finais.

Tipos de união

O PHP 8.1 também suporta diversos tipos de união. Isso permite que os desenvolvedores atribuam vários tipos de valores a uma variável, o qual é semelhante no TypeScript.

A principal restrição para declarar tipos de união em suas classes ou argumentos é que você não pode usar o tipo void. Antes do PHP 8, os desenvolvedores tinham que especificar combinações de tipos nas anotações PHPDoc.

Tipo misto

Ao discutir o suporte a tipos de união no PHP 8.1, ele continua com o tipo misto da versão anterior. Mixed é um pseudotipo no PHP 8 que representa todos os tipos com os quais o PHP trabalha.

Quando você declara mixed, isso significa que os parâmetros, retornos e propriedades podem ser de qualquer tipo. Não há necessidade de excluir informações de tipo de valor. É possível usar o tipo misto em união com outros tipos.

Argumentos nomeados

Com argumentos nomeados no lançamento do PHP 8.1, os desenvolvedores podem passar argumentos para uma função adicionando o nome do parâmetro antes de seu valor.

O nome do parâmetro em vez da posição do parâmetro torna-se o mais importante. A introdução de argumentos nomeados torna o código mais fácil de entender porque os nomes dos argumentos são descritivos. Esse recurso também permite que os desenvolvedores especifiquem apenas os argumentos necessários, sem precisar especificar os padrões.

Atributos

Os desenvolvedores apreciarão muito que o lançamento do PHP 8.1 também traz uma nova versão de atributos. Anteriormente, a única opção para adicionar metadados a declarações de classes, propriedades, etc., era por meio de anotações PHPDoc. Os novos atributos do PHP 8 são metadados estruturados que os desenvolvedores podem usar com a sintaxe nativa do PHP.

Eles podem facilmente adicioná-los às declarações de classes, propriedades, métodos, funções, parâmetros de função ou método e constantes do PHP.

Expressão de correspondência

O PHP 8.1 apresenta uexpressão de correspondência que é semelhante à opção clássica. Comparado ao switch, o match faz verificações mais rígidas. A nova expressão possui uma sintaxe mais concisa.

Ele suporta expressões de uma linha e permite que você especifique vários elementos separados por uma vírgula. Não há necessidade de escrever a declaração tradicional de “pausa”, pois ela é adicionada implicitamente após cada braço. O resultado da expressão de correspondência pode ser passado como argumento ou armazenado em uma variável.

Quais as novidades do PHP 8.1 para 2022?

O fato é que quando o PHP 8.0 saiu, ele teve uma ótima recepção por conta de várias funcionalidades, especialmente pelo Compilador Just In Time. O PHP 8.1 não ficou para trás e trouxe mais inovações que a comunidade vinha pedindo há muito tempo. Entre eles podemos citar:

  • avanço no motor de verificações de tipos;
  • enums;
  • imutabilidade;
  • desempacotamento de arrays;
  • fibras;
  • propriedades imutáveis;
  • nova sintaxe para referenciar as classes;
  • utilizar new como valor padrão em novos atributos;
  • interseção de tipos;
  • tipo de retorno never;
  • constantes de classes finais;
  • nova sintaxe para números octais.

Entenda sobre os aprimoramentos do PHP 8.1

Para se ter uma ideia das principais atualizações, as enumerações (enums) foram escritas em 2020 por Larry Garfield e Ilija Tovilo e elas trazem o principal efeito integrado na linguagem e poderemos parar de usar constantes na classe para indicar quais os valores possíveis em uma função/método.

No desempacotamento de arrays , na versão PHP 8.1 será possível com chaves tipo string e a procedência segue a mesma aplicação do array_merge0. Na parte fibras (ou fibers), elas despertaram muito interesse na comunidade de programação, especialmente os que desenvolveram Swoole.

Afinal, as fibras se referem ao mecanismo de paralelismo, conhecido como green threads. A ideia é que elas possam gerenciar interrupções relacionadas com o fluxo de execução do código.

As propriedades imutáveis, na versão 8.1, já não é mais necessário escrever as classes de forma extensa na programação e criar uma nova instância para defender a imutabilidade do objeto atual. Ou seja, podemos definir propriedades como imutáveis desde o início.

A nova atualização sintaxe de Callables será muito útil no momento de fazer uma referência ao código de forma dinâmica para o programador e assim, será possível imaginar um release futuro do framework.

Na Interseção de tipos, desde o PHP 8.0 é permitido afirmar que determinada variável é do tipo A ou B. A versão PHP 8.1 trouxe interseção de tipos permitindo identificar qual variável é do tipo A e B ao mesmo tempo. Um exemplo claro que podemos abordar são os mocks em testes.

A atualização também trouxe o tipo de retorno never refere-se quando você executa uma função, faz algumas programações e código não consegue ativar as operações. Com ele, o comportamento será mais explícito e você diz à máquina virtual que aquela função vai finalizar o processo PHP.

Nas constantes de classes finais, na inovação será possível adicionar o modificador final para as constantes de classes de forma que nunca seja sobrescrita. E, na nova sintaxe para números octais, a linguagem PHP permitirá escrever os números em diferentes bases numéricas e seguirão a sintaxe a seguir:

  • base binária, o qual utilizará o prefixo 0b;
  • base octal, com o prefixo 0;
  • base decimal, sem nenhum prefixo;
  • base hexadecimal, com prefixo 0x.

Para finalizar sobre as atualizações, a utilização new como valor padrão em atributos será uma realidade que será possível atribuir um valor padrão na assinatura da função ou método.

A nova atualização também conta com imagem AVIF

O novo formato de imagem AVIF, ou AV1 Imagem File promove uma inovação, livre de royalty, baseado no formato de codificação de vídeos. Inclusive, oferece maior compressão para arquivos menores e também suporta vários recursos como HDR e transparência.

Inclusive, ele foi padronizado recentemente, exatamente no ano de 8 de junho de 2021, trazendo novos caminhos aos navegadores como o Firefox 86+ e Chrome 85+, trazendo suporte a imagens AVIF. Esse processamento de imagens no PHP 8.1 traz maior qualidade e suporte.

Para utilizar, basta adicionar a extensão PHP 8.1 GD, o qual também traz duas novas funções para trabalhos com imagem AVIF. Assim, você poderá utilizá-la para converter ou editar a imagem. Além disso, é possível converter um JPEG para AVIF. A outra função que esse modelo possui é a produção de ficheiros de imagem.

Entenda a nova chave de diretório no PHP 8.1

Como se sabe, o PHP contém um vasto número de variáveis pré-definidas para rastreamento. E uma delas, é a variável_FILES o qual contém um array associativo de itens carregados por meio do método HTTP POST. Ademais, a maioria dos navegadores modernos aguentam o upload de um diretório interno, com áreas de upload de arquivos HTML.

O modelo PHP 8.0 suportava esta funcionalidade, contudo, com cautela. Não era possível carregar uma pasta com a estrutura exata de diretórios ou caminhos relativos pelo fato do PHP não passar essa informação ao array. Com o PHP 8.1, há a adição de uma nova chave denominada full_patch. Com esses dados, é possível armazenar caminhos ou duplicar a estrutura ideal de diretórios no servidor.

Essa informação pode ser testada no momento da emissão do array $files, por meio do comando var_dump ($_files). Entretanto, é crucial ter cautela com esta funcionalidade para que você se proteja contra os ataques de uploads de arquivo padrão.

Novo suporte para algoritmos de MurmurHash3 e xxHash hash

A nova versão PHP 8.1 adiciona suportes de algoritmos algoritmos de hashing MurmurHash3 e xxHash sendo que eles não são voltados para uso criptográfico, contudo, oferecem uma boa saída de dispersão, aleatoriedade e singularidade. Dessa forma, são variantes de algoritmos de hashing mais eficientes que a taxa de transferência da RAM.

Inclusive, ele também adiciona o suporte para apontar parâmetros específicos de algoritmos com hastings mais rápidos que a taxa de transferência da RAM. O valor padrão para este argumento é [ ]. Ademais, ele não afetará nenhuma das funções hashes existentes.

Por fim, se você está começando do zero, pode iniciar com a versão 8.1. Isso reduz quaisquer custos associados à migração de uma versão anterior. Enquanto sua equipe está trabalhando, novas versões secundárias serão lançadas e você estará seguro para passar para a produção quando estiver pronto.

O modelo PHP 8.1 permitirá que sua equipe escreva um código mais limpo, resultando em melhor desempenho desde o início. E tenha em mente que quanto mais código sua equipe escreve em versões anteriores do PHP, mais migração você precisará fazer quando decidir atualizar para a versão 8.1.

Gostou do conteúdo e quer acompanhar outras novidades do mercado da tecnologia? Siga nossos perfis nas redes sociais — estamos no Twitter, Facebook e LinkedIn.