Diogo Besson :: tecnologia

Novidades do PHP 7

Novidades do PHP 7

Novidades do PHP 7 foram liberadas pela Zend em um email marketing que eu recebi hoje pela manhã.
Vale a pena compartilhar duas ou três coisas novas com vocês:

 

Assusta um pouco e causa estranheza o fato de parecer, para muitos, que os desenvolvedores comeram bola na atualização de alguma versão, mas a verdade é que tudo indica que o PHP vai do 5.x para o 7, avançando rapidamente algumas casas no tabuleiro das versões.

A discussão do PHP 6 foi tão acalorada e polêmica que preferiram fazer esse esquema, tão comum em divulgação de software, de pular a numeração, e apresentar uma API mais madura ao mercado.

The vote has ended. By 58 votes to 24, the next major release of PHP, to succeed the 5.x series, shall be named PHP 7.
Hopefully this is the end of the matter and we can get onto matters of implementation and features, rather than naming. 🙂

Andrea Faulds
http://ajf.me/

No meu ponto de vista, foi uma boa jogada. O PHP ainda é forte e precisa se mostrar atualizado diante da praticidade e produtividade das outras linguagens orientadas a objetos.

O que eu quero mostrar aqui nesse post é muito simples. Primeiro que o PHP vai ter um novo operador e, segundo, que teremos declaração explícita de tipagem no retorno das funções. A terceira não é bem uma novidade, mas não  é menos importante, pois trata da substituição da extensão json para a biblioteca jsond.

Spaceship Operator. o novo operador

O Spaceship, ou operador de comparação combinada, possibilita uma comparação de três vias, ou três respostas, de uso semelhante àqueles operadores booleanos que já estamos acostumados a usar em ifs e ternários (“==”, “>”,”>”,”<=”…).

A diferença está na resposta retornada, sendo que ele pode te trazer um “0”, um “1” e… “-1” !

Não é nenhum absurdo pra quem programa em Ruby ou Perl, mas pra gente é um acontecimento que amplia os horizontes dos operadores, o que é sempre bem vindo, claro!

“Plagiando” um bocado do manual, ele é usado da seguinte forma:

operador <=> equivalente
$a < $b ($a <=> $b) === -1
$a <= $b ($a <=> $b) === -1 || ($a <=> $b) === 0
$a == $b ($a <=> $b) === 0
$a != $b ($a <=> $b) !== 0
$a >= $b ($a <=> $b) === 1 || ($a <=> $b) === 0
$a > $b ($a <=> $b) === 1

E, na prática…

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

echo “a” <=> “a”; // 0
echo “a” <=> “b”; // -1
echo “b” <=> “a”; // 1

echo “a” <=> “aa”; // -1
echo “zz” <=> “aa”; // 1

Podendo também ser aplicado em arrays e objetos

echo [] <=> []; // 0
echo [1, 2, 3] <=> [1, 2, 3]; // 0
echo [1, 2, 3] <=> []; // 1
echo [1, 2, 3] <=> [1, 2, 1]; // 1
echo [1, 2, 3] <=> [1, 2, 4]; // -1

$a = (object) [“a” => “b”];
$b = (object) [“a” => “b”];
echo $a <=> $b; // 0

$a = (object) [“a” => “b”];
$b = (object) [“a” => “c”];
echo $a <=> $b; // -1

$a = (object) [“a” => “c”];
$b = (object) [“a” => “b”];
echo $a <=> $b; // 1

O texto completo desse release você encontra na documentação oficial do php

Declaração explícita de tipagem no retorno das funções

A proposta é basicamente especificar o tipo no retorno das funções e o uso é até que bem familiar. Já passava da hora de termos algo assim, não é mesmo?

function foo(): type {
    return (type) bar ;
}

Só um cuidado será necessário, pois algumas funções não podem declarar a tipagem explicitamente. Construtores de classe (Class constructors), Destruidores (destructors), e Clones(clone methods) vão lançar erros fatais, caso o desenvolvedor caia nessa prática.

O texto completo desse release você encontra na documentação oficial do php

De json para jsond

O que acontece é que a extensão json não tem uma licença livre para que todo mundo possa usar numa boa, o que para o Linux torna-se um problema, então, para o bem da manutenção e do uso geral da nação, redesenhar as funções de json são altamente prioritárias.

O texto completo desse release você encontra na documentação oficial do php

Em votação ainda temos algumas coisas bem legais como o uso de “yield from <expr>”, o incremento de expressões reservadas e, o mais bacana de todos, a “arrayzação” das opções disponíveis (hoje em INI) para o session_start():

session_start(array('lazy_write'=>true, 'lazy_destroy'=>120, 'unsafe_lock'=>false));

Muito bom, né?

Vamos aguardar outras novidades!

abraço, pessoal.

LINKS :

Infográfico das novidades do PHP 7

Request for Comments – RFC – Discussões sobre as novas implementações para o PHP 7

2 Comments

  1. Rann

    e o memcached que se lascou nisso =(

  2. Diogo Besson (Post author)

    Salve Rann,
    Nunca usei nem memcached (https://secure.php.net/manual/en/book.memcached.php), nem memcache (https://secure.php.net/manual/en/book.memcache.php) na vida.
    Você usa muito? Quando der, conta aí a sua experiência com isso pra gente saber mais.
    abraço!

Leave a Comment

O seu endereço de e-mail não será publicado.