PHP 7 Lançado com Várias Melhorias

PHP 7 Lançado com Várias Melhorias

Dia 3 de dezembro de 2015 marcou o lançamento oficial do PHP 7, a nova versão da popular linguagem de programação. A última versão lançada do PHP foi a 5, em 2004, mais de 11 anos atrás. Por essa razão a expectativa dos desenvolvedores é grande para esta nova versão. Neste artigo vou falar das principais novidades do PHP 7.

Introdução

Para começar, vou explicar o que aconteceu com o PHP 6. Quando os desenvolvedores do PHP iniciaram os planos para a versão 6, ficou estabelecido que a grande melhoria seria implementar o suporte a Unicode nas strings do PHP. O que aconteceu foi que essa alteração trouxe tantos problemas para o resto do PHP que os desenvolvedores decidiram abandonar a versão 6. Como existiam artigos, livros e grupos que já utilizavam a versão 6, a decisão final foi pular essa versão e ir diretamente para a versão 7.

A versão PHP 5 teve diversas atualização desde o seu lançamento em 2004, sendo a última delas a 5.6. Nesse meio tempo o Facebook andou trabalhando em paralelo no PHP, criando o PHP HipHop Compiler em 2010, depois incluso na HHVM (máquina virtual para execução dos aplicativos compilados). Em 2014 o Facebook lançou a linguagem de programação Hack, baseada no PHP e que também pode ser executada através de HHVM. Essas iniciativas foram todas paralelas ao desenvolvimento do PHP, mas auxiliaram no direcionamento da linguagem.

Nesse contexto foi dado início a criação do PHPNG (PHP Next Generation), uma refatoração do Zend Engine. A partir desse novo motor chegou-se a conclusão que era possível alcançar um grande ganho de performance, portanto o PHPNG virou a base para o PHP 7.

Melhorias no PHP 7

A seguir uma explicação sobre as principais melhorias do PHP 7 em relação as versões anteriores.

Performance

A melhoria mais importante (e com certeza mais comentada) é a performance. De acordo com o site oficial, o PHP 7 chega a ser duas vezes mais rápido do que o PHP 5.6. Uma melhoria considerável. Isso foi possível pois o PHPNG otimiza a utilização da memória e adiciona compilação just in time (JIT). Abaixo alguns gráficos preparados pelo time de performance do Zend (para ver todo o infográfico, clique aqui).

Frameworks PHP7 WP PHP7

Novos Operadores

Dois novos operadores foram introduzidos no PHP 7.

Spaceship (<=>)

O operador spaceship (ou espaçonave), também conhecido como combined comparison operator (operador de comparação combinado), permite fazer comparações rapidamente. A notação é <=> e ele funciona assim:

Se $a for menor que $z, a operação vai retornar -1; Caso sejam iguais, o retorno será 0; E caso $a for maior que $z, o valor será 1. É uma maneira mais curta de escrever a seguinte expressão:

Null Coalesce (??)

O operador null coalesce (ou aglutinador de nulos) permite verificar se uma variável ou chave de array existe e atribuir um valor padrão caso não exista. Isso normalmente era feito com isset(), agora não precisa mais.

É o equivalente a fazermos:

Declarações de Tipo

As declarações de tipos escalares (scalar type declarations) podem ser definidas de duas maneiras: coercive (padrão) ou strict. No modo coercivo, o PHP vai aceitar coisas como uma variável inteira receber um float sem erros ou warnings. Por exemplo:

O código acima será executado sem problemas. Mas se você quiser forçar o modo estrito pode usar o seguinte comando:

A partir do momento que for feita essa declaração (deve ser feita essa declaração em cada arquivo desejado), se você atribuir uma string ou float a uma variável int, como no código acima, você terá o seguinte erro:

Fatal error: Uncaught TypeError: Argument 2 passed to add() must be of the type integer, string given…

A única exceção é quando você atribuir um int a uma variável float. Como um int é um float arredondado, é possível fazer a conversão de int para float sem perdas, portanto não existe erro neste caso.

Tipos de Retorno

Assim como as declarações de tipo, agora é possível definir tipos de retorno de funções e métodos.

O código acima vai rodar normalmente no modo coercivo. A partir do momento que você adicionar o strict_types=1, o PHP vai retornar o seguinte erro:

Fatal error: Uncaught TypeError: Return value of a() must be of the type boolean, integer returned

Classes Anônimas

Esta novidade permite declarar classes simples, para serem utilizadas apenas uma vez, da seguinte maneira:

Erros Fatais Convertidos para Exceções

Uma das melhores novidades na minha opinião é a conversão de vários erros fatais em exceções. Isso significa que erros que interromperiam a execução no PHP 5+ agora podem ser tratados com um bloco try/catch. Isso possibilita um melhor tratamento de erros dentro de classes e assim diminuindo aquelas telas de erro do PHP. Essa melhoria se dá com a criação da \EngineException, que poderá ser usada para tratar os erros.

Utilização de Classes em Namespaces

A utilização de várias classes em um mesmo namespace foi amplamente simplificada. Agora é possível fazer o seguinte:

Isso vai poupar algumas linhas de código 😉

Itens Removidos

Algumas coisas foram removidas e não vão mais funcionar no PHP 7. Esses itens já eram considerados deprecated, portando ninguém deveria estar usando. É claro que deve ter muito código usando isso por aí, portanto muita gente vai ter dor de cabeça ao atualizar.

Tags

Tags no estilo ASP-style (<%, <%= e %>), foram removidas assim como tags do tipo script (<script language=”php”>). A tag recomendada continua sendo <?php. Algumas funções também foram removidas, como por exemplo o split.

Funções

Entre essas funções estão todas da extensão ereg (ereg_*). Agora deve se utilizar as funções preg_*. Outra extensão abandonada foi a mysql e suas funções mysql_*. Mas não se preocupe, ainda é possível acessar o banco de dados MySQL usando a extensão mysqli e as funções mysqli_*. Aliás, você já deveria estar utilizando elas – se não está, pode começar a substituir.

Construtores PHP 4

No PHP 4 (e no 5 também) era possível declarar construtores com o mesmo nome da classe:

A partir de agora será permitido apenas __construct(). Ainda será possível utilizá-los, mas recebendo um aviso E_DEPRECATED.

Conclusão

Essas são algumas das melhorias mais comentadas do PHP 7. Esperamos que com a refatoração feita mais melhorias cheguem nas próximas versões menores e o PHP melhore cada vez mais. E você, já começou a utilizá-lo? Qual melhoria você gostou mais?

Referências

2 respostas para “PHP 7 Lançado com Várias Melhorias”

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *