5 novidades interessantes do PHP 7

258 0

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.

(Visited 18 times, 1 visits today)

Elisio Leonardo

Elisio Leonardo is an experienced Web Developer, Solutions Architect, Digital Marketing Expert, and content producer with a passion for technology, artificial intelligence, web development, and entertainment. With nearly 15 years of writing engaging content on technology and entertainment, particularly Comic Book Movies, Elisio has become a trusted source of information in the digital landscape.