Algumas novidades do PHP 7.3

image_pdfimage_print
  1. A sintaxe de Heredoc e Nowdoc ficaram um pouco menos restritiva
  2. Permitir vírgulas a direita em chamadas de funções e métodos
  3. Opção para ativar exceptions em erros das funções json_encode e json_decode
  4. Possibilidade de uso de referencia em list()
  5. Adicionado a função is_countable()

1 – A sintaxe de Heredoc e Nowdoc ficaram um pouco menos restritiva
Em versões anteriores, era necessário para o uso do recurso de digitação em multi-linhas a obrigatoriedade de finalizar o texto digitado com a mesma palavra que iniciou o bloco, como abaixo demonstrado:

$foo = <<<IDENTIFIER
the crazy dog jumps over the lazy fox
"foo" bar;
IDENTIFIER

O RFC do PHP7.3 sugere a remoção desta obrigatoriedade com o objetivo de deixar o código mais legível. Antes, era necessário inclusive quebrar a identação utilizada no resto do código só para atender o sistema de tokenização do Heredoc e Nowdoc.

Permitir vírgulas a direita em chamadas de funções e métodos
Esta alteração permitiria que na chamada a funções e métodos seja possível utilizar vírgulas vagas a direita, como no exemplo abaixo:

foo('arg1', 'arg2',); // Atenção a vírgula ao final

Não seria ainda possível usar mais de uma vírgula ao final, e nem utilizar vírgulas para saltar argumentos não informados.
Outro ponto importante, é que na declaração de métodos e funções, o uso deste recurso não seria possível.

Opção para ativar exceptions em erros das funções json_encode e json_decode
Adicionado a opção JSON_THROW_ON_ERROR as funções de modo que em caso de falha, não seja retornado null, mas sim, o novo tipo JsonException, que pode ser capturado com um try/catch, como no exemplo abaixo:

try {
  json_decode("{", false, 512, JSON_THROW_ON_ERROR);
}
catch (\JsonException $exception) {
  echo $exception->getMessage(); // "Syntax error"
}

JsonException é uma subclasse de Exception e pode normalmente ser capturado pelo uso deste ‘genérico’.

Possibilidade de uso de referencia em list()

$arr = ['maca', 'laranja'];
list($a, &$b) = $arr;
$b = 'banana';
echo $arr[1];
// Fatal error: [] and list() assignments cannot be by reference in .. on line ..

Isto era o que ocorria ao tentar fazer uso de referencia em list().

No entanto, agora irá ser apresentado em echo $arr[1] a string ‘banana’.

Importante notar que não será possível efetuar referência de variável não referenciáveis, como em:

list($a, &$b) = [12, 14];

Irá ser apresentado a mensagem de erro fatal, Cannot assign reference to non referencable value in .. on line ..

Adicionado a função is_countable()

O PHP 7.2 adicionou muitas funções como deprecated. Além disto, se chamar count() em uma variável que não seja “contável”, o PHP mostrará um alerta sobre isso.

Uma solução comum era verificar se a variável determinada é “contável” antes de chamar count() nela.

Uma variável “contável” é um array ou um objeto cuja classe implementa a interface \Countable.

O PHP 7.3 agora tem a nova função is_countable() que retorna se a variável passada é ou não “contável”.

Gostou? Tire um minutinho e dê sua contribuição para Drall Dev Community no Patreon!