5 novidades interessantes do PHP 7

Os mais atentos já devem ter notado que a maior actualização do PHP depois de muitos anos, o PHP 7 foi lançado no início do mês de Dezembro de 2015. O PHP 7 será o sucessor do PHP 5.x, e traz muitas novidades, actualizações e correcções em relação a versão anterior, e neste artigo trago as 5 principais novidades do PHP 7, tiradas do blog do Angelito Goulart.

O que aconteceu com o PHP 6

Os ainda mais atentos devem se perguntar o que terá acontecido com a versão 6 do PHP, uma vez que a ultima versão lançada pertencia série 5.x. O facto é que o grupo de desenvolvimento do PHP decidiu pular a versão 6, devido a demora no lançamento da mesma. A versão 6 do PHP foi anunciada a cerca de 10 anos atrás e de lá para cá muitos livros foram lançados citando funcionalidades anunciadas na época. Como a versão que foi agora lançada possui funcionalidades completamente diferentes, achou-se mais prático chamar de versão 7, para não confundir os usuários.Vamos então as principais funcionalidades do PHP 7

Spaceship Operator

O Spaceship Operator tem um comportamento semelhante a função strcmp. Basicamente  o operador faz uma comparação entre duas variáveis e traz os seguintes resultados:Caso o elemento da direita seja maior, retorna -1.Caso os dois elementos sejam iguais, retorna 0.Caso o elemento da esquerda seja maior, retorna 1.Um exemplo prático:

echo 1 <=> 2; // Retorna -1echo 1 <=> 1; // Retorna 0echo 2 <=> 1; // Retorna 1

Scalar Type Hints

Um dos factores que faz com que o PHP, como linguagem de programação, não seja vista com bons olhos é a sua tipagem fraca. Em outras palavras, uma variável pode ser um int, depois passar para string e depois passar para objecto no mesmo escopo do programa. O Scalar Type Hints ou indução do tipo escalar pretende resolver este problema. Assim, o programador pode definir o tipo de parâmetro que um método deve receber, o tipo de retorno de uma função, etc.O PHP 5 já implementava esta metodologia para arrays e objectos, e o PHP 7 acrescentou a mesma funcionalidade para float int string e boolean. Mas para que isso funcione, é necessário activar a opção strict_types no php.ini ou no inicio do programa.Exemplo:

 declare(strict_types=1); function foo(string $bar){ echo 'Bar: ' . $bar; } foo(0.2); 

Na primeira linha activamos a opção strict_types e depois declaramos uma função que recebe uma string como parametro. Ao chamarmos a função em foo(0.2), teremos um erro do tipo Uncaught TypeError, uma vez que passamos um float em vez de string como parametro.Note que strict_types vem desactivado por padrão, logo não haverá problemas em migrar suas aplicações actuais para o PHP 7

Null Coalesce Operator

Muitas vezes usamos o seguinte código para verificar se uma determinada variável ou índice num array existe:

$nome = (isset($_POST['nome'])) ? $_POST['nome'] : 'sem nome';

No exemplo acima, verificamos se a variável $_POST[‘nome’] existe. Caso exista, atribuimos seu valor a variável $nome. Caso não exista, atribuimos a string ‘sem nome‘ a variável $nome.Com o null coalesce operator, a mesma coisa pode ser feita de uma forma mais fácil e simples:

$nome = $_POST['nome'] ?? 'sem nome';

Uma solução útil e simples do PHP 7

Return Type Declarations

Assim como o Scalar Type Hints, o Return Type Declarations ou Declaração de Tipos de Retorno pretendem transformar o PHP numa linguagem fortemente tipada. Assim, ao criarmos uma função ou método, podemos declarar um tipo de retorno para ela. Exemplo:

declare(strict_types=1);function dice() : int {return '5';}dice();

O código acima executa uma função que deve retornar um int, porém está retornando uma string, fazendo assim com que um erro seja exibido. No exemplo abaixo, temos o mesmo código, porém funcionando da forma correta:

declare(strict_types=1);function dice() : int {return 5;}dice();

Lembrando que a opção strict_types deve estar ativada para que o PHP se comporte como uma linguagem fortemente tipada.

Anonymous Classes

Classes anônimas é um recurso introduzido no PHP 7 que permite ao desenvolvedor criar classes de forma dinâmica, ou seja, podemos passar uma classe como parâmetro de um método ou função. Exemplo:

 var_dump(new class { public $bar = 'test'; public function foo(){ return $this->bar; }});

No código acima, estamos criando um classe diretamente na chamada da função var_dump, dinamicamente, sem a necessidade de instanciar um objeto.

#mc_embed_signup{background:#fff; clear:left; font:14px Helvetica,Arial,sans-serif; } /* Add your own MailChimp form style overrides in your site stylesheet or in this style block. We recommend moving this block and the preceding CSS link to the HEAD of your HTML file. */

Receba nossas actualizações por email

Ver Campanhas anteriores.

Receba nossas actualizações por email

Ver Campanhas anteriores.

(Visited 62 times, 1 visits today)
Share