PHP 7.3: As novidades desta nova versão

4 Apr 2019

Como você deve saber, o PHP está ganhando forças novamente e a comunidade está a todo vapor para melhorar a sintaxe da linguagem, bem como performance.

A última versão do PHP 7.3 está chegando com tudo e com recursos para ajudar os desenvolvedores. Nessa versão, teremos novas funcionalidades, melhoria no desempenho, algumas depreciações e um bom número de correções de erros.

Neste artigo, levantamos as principais alterações para que você fique por dentro antes de atualizar seu servidor, leia até o final para saber das novidades.

Atribuições de referências em list()

O PHP já tem atribuição de list() e atribuição por referência há bastante tempo. Contudo, até agora não era possível usar a atribuição de referência com list(). A nova versão vem trazer uma sintaxe que permite isso.

É interessante pensar que as solicitações para esta implementação são de quase 20 anos, como podemos ver neste e neste request.

A nova sintaxe ficou da seguinte forma:

$array = [1, 2];
list($a, &$b) = $array;[/php]
Que é equivalente a fazer:
[php]$array = [1, 2];
$a = $array[0];
$b =& $array[1]

Essa nova abordagem também será possível usar em listas aninhadas, como você pode ver a especificação completa na documentação oficial do PHP.

Lançamento de exceção de erros em json_encode e json_decode

Atualmente, o PHP tem duas funções para lidar com JSON: json_decode () e json_encode(), porém, nenhuma delas tem tratamento para erros ideal.

O json_decode() retorna NULL dá erro, mas NULL também é um resultado válido se decodificar o JSON “null”. E só é possível saber se ocorreu algum erro chamando json_last_error() ou json_last_error_msg(), que retorna o estado de erro global.

Contudo, simplesmente alterar o comportamento padrão dessas funções para lançar exceção poderia ser um problema muito grande de compatibilidade com versões anteriores.

Na versão 7.3, teremos a adição de uma nova flag (JSON_THROW_ON_ERROR) de opção para json_decode(). Quando passado essa flag, o comportamento de erro dessas funções é alterado. O estado de erro global não é modificado e uma exception do tipo JsonException é lançada.

Função is_countable()

No PHP 7.2 foi adicionado um Warning ao tentar contar objetos incontáveis e, a partir disso, todos devs foram forçados a procurar e alterar seu código para evitar esse Warning. Um código parecido com o seguinte começou a ser utilizado para evitar este Warning:

if (is_array($foo) || $foo instanceof Countable) {
return count($foo);
}[/php]
Então foi implementado a criação de um método que retorne TRUE ou FALSE para indicar se um objeto é contável ou não. A sintaxe ficou da seguinte forma:
[php]if (is_countable($foo)) {
// $foo é countable
}

Outros exemplos podem ser encontrados na Wiki oficial do PHP.

Flexibilidade na sintaxe para o Heredoc e Nowdoc

As sintaxes rígidas do heredoc e nowdoc faz com que eles sejam evitados pelos desenvolvedores, pois seu uso pode parecer feio e prejudicar a legibilidade. Sendo assim, foi implementado duas alterações às atuais sintaxes heredoc e nowdoc para melhorar as questões:

  • Permitir que o marcador de fechamento seja indentado;
  • Remover o novo requisito de linha após o marcador de fechamento

Por exemplo:

Anteriormente, o código precisava ser:

<?php
class foo {
public $bar = <<<EOT
bar
EOT;
}

E agora pode ser (detalhe para a indentação):

<?php
class foo {
   public $bar = <<<EOT
   bar
   EOT;
}

Outras mudanças foram feitas na sintaxe, como a necessidade de quebrar a linha após o marcador de fechamento. Todas as mudanças feitas nessa função podem ser conferidas diferentemente na RFC do PHP.

A nova versão do PHP também traz outras funcionalidades, correções de bugs e também a depreciação de alguns métodos. A lista dos métodos que serão removidos em futuras versões você pode encontrar neste link.

trailing comma em chamadas de função e método

Permitir uma “vírgula à direita” em chamadas de função torna mais conveniente acrescentar argumentos em contextos que é comum acionar funções com muitos argumentos. Muito útil para o VCS (GIT, TFS, SVN, CVS etc), pois as linhas individuais na lista podem ser modificadas, adicionadas ou removidas sem precisar tocar em linhas não relacionadas que estejam no final da lista.

Isso significa que inserir parâmetros adicionais às chamadas vai evitar tocar na linha anterior para adicionar uma nova vírgula, o que é ruim para o histórico do controle de versão. Alguns exemplos do uso dessa nova sintaxe:

Inicializando um array

$foo = [
'foo',
'bar',
];

Chamando um método

unset(
$foo,
$bar,
$baz,
);

Passando parâmetros para um template engine

echo $twig->render(
'index.html',
compact(
'title',
'body',
'comments',
)
);

Mais exemplos de uso podem ser encontrados na Wiki oficial do PHP.

Disponibilidade

A maioria dos servidores já estão preparando para receber a nova versão em seus servidores cPanel, e nós da DELTA SERVERS não ficamos pra trás. A partir de 04 abril de 2019 todos os clientes poderão atualizar a versão do PHP para 7.3 dentro do painel de controle, e se você ainda não é cliente, conheça nossos serviços.









Powered by WHMCompleteSolution