O PHP 7.1, primeira atualização da nova versão da linguagem, vai trazer algumas melhorias (e remoções) bem interessantes e ainda necessárias nesse processo de evolução que o PHP felizmente vem passando.

Abaixo segue algumas considerações sobre estas novidades que serão adicionadas (ou removidas) no PHP 7.1. Para uma lista completa, além de algumas discussões sobre as mudanças, você confere neste link (em inglês).

  • Lidar com mais de um tipo de  exception de uma vez só
  • Suporte ao Curl HTTP/2 server push
  • Suporte a visibilidade de constantes em classes
  • Tipo de retorno ‘void’
  • Nova sintaxe de restruturação de arrays utilizando list()
  • Aviso do tipo ‘warning’ em strings dentro de operações aritméticas
  • Remoção oficial (deprecate) da biblioteca mcrypt()

Lidando com mais de uma Exception

Em alguns casos nós lidávamos com diferentes exceptions da mesma forma, o que sempre resultava em códigos duplicados. Por exemplo:

A partir do PHP 7.1, se fossemos reescrever este exemplo, as duas Exceptions que precisam ser lidadas da mesma forma, poderiam ser escritas num único bloco de instruções:

Perceba que essa sintaxe não utiliza o operador duplo || que nós estamos costumados a associae com “ou”. Ao invés disso, use um único pipe | .

Suporte a Curl HTTP/2 server push

Pra começo de conversa, o que é server push ? A melhor forma de entender é dando um exemplo:

Se você analisar como um website convencional é renderizado pelo browser, primeiro o usuário faz uma requisição ao servidor dominio.com.br, o servidor responde com uma série de instruções no qual o browser interpreta e mostra na tela.

Parte dessa interpretação do browser incluir entender quais recursos adicionais ele precisa para poder renderizar completamente uma página. Por exemplo, folhas de estilo (CSS), códigos Javascript, imagens, e assim por diante. E para isso ele faz novas requisições para cada um destes recursos.

O server push é um processo que visa acelerar o processo de carregamento da página, enviando todos estes recursos ao cliente diretamente, de uma só vez.

Server Push está disponível através da biblioteca libcurl desde a versão 7.44.0.

Mais informações sobre este suporte você encontra neste link (em inglês).

Suporte a visibilidade de constantes em classes

Constantes em classes atualmente não podem ser setadas como private, ou protected. Pela sua natureza, elas são sempre públicas.

Por exemplo:

O PHP 7.1 agora insere modificadores de visibilidade para constantes nas classes:

Esta mudança agora alinha as constantes com outros membros da classe.

Tipo de retorno Void

Especificações de retorno em clases foram adicionadas no PHP 7.0. Como um lembrete, isso permite que um desenvolvedor deixa explícito o tipo de dados que se espera que a função retorne.

Por exemplo:

No PHP 7.1 agora é possível declarar que uma função possui tipo de retorno void (nada), ou seja, quando uma função simplesmente não retorna nenhum valor:

Você pode argumentar que toda função deveria retornar algo, mesmo que seja um booleano para indiciar uma execução bem sucedida, mas isso é uma discussão para outro dia.

Nova sintaxe de restruturação de arrays utilizando list()

Atualmente é possível converter um array para uma lista de variáveis utilizando a função nativa list().

Exemplo:

A função list() somente funciona com arrays de índice numérico começando com zero, como no exemplo acima. Não funciona com arrays que possuem índices específicos, como:

O PHP 7.1 agora permite isso:

Outra grande melhoria que o PHP 7.1 introduz é a sintaxe de destruição de arrays com colchetes. Na verdade é uma alternativa a função list() ao reconstruir um array.

Perceba como isso segue a mesma sintaxe que estamos acostumados a usar com colchetes ao criar um array:

Mais detalhes sobre esta melhoria você confere nesse link (em inglês).

Aviso do tipo ‘Warning’ em strings dentro de operações aritméticas

Ao realizar operações aritméticas no PHP, a linguagem lida de maneira tranquila (ou não, dependendo do seu ponto de vista) ao misturar valores inteiros e números baseados em strings.

Veja os seguintes exemplos:

O exemplo 4 contém valores numéricos, então todo o resto é ignorado, e soma dos dois é utilizada no cálculo do total 10. Mas seria interessante se o PHP soltasse um warning nesses casos, pois talvez não seja o comportamento que você espera.

No PHP 7.1, os exemplos 4 e 5 vão retornar:

Em português simples e claro, “Uma string numérica com formação meio bizarra foi encontrada no arquivo.php na linha X”

Evidentemente isso vai trazer alguns probleminhas de compatibilidade com versões anteriores, uma vez que agora ‘warnings’ vão aparecer onde antes o PHP lidava de maneira silenciosa. É possível declarar strings como inteiros utilizando a sintaxe “(int) string”, mas eu entendo que se você vai realizar operações matemáticas em strings não-numéricas (ou qualquer string, na verdade) ainda existe um longo caminho de melhorias que precisam acontecer na linguagem.

Remoção oficial (deprecate) da biblioteca mcrypt()

A biblioteca mcrypt foi abandonada em 2007 e contém inúmeros bugs e conflitos de versões. Assim, sua inclusão nas novas versões do PHP sempre estiveram na pauta para discussão.

No PHP 7.1, todas as funções mcrypt_* vão soltar um aviso E_DEPRECATED . No PHP 7.1+1 serão removidas permanentemente.

E isso é tudo por enquanto!

Fabio Ferreira on EmailFabio Ferreira on InstagramFabio Ferreira on Twitter
Fabio Ferreira

Desenvolvedor Javascript e PHP, é editor do blog Café na Veia e também atua como desenvolvedor web freelancer na cidade de São Paulo.


Author: Fabio Ferreira

Desenvolvedor Javascript e PHP, é editor do blog Café na Veia e também atua como desenvolvedor web freelancer na cidade de São Paulo.

Deixe uma resposta

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

Instagram did not return any images.

Siga também nosso Instagram!