Novidades do PHP7 (Alpha Version)

Bem se você achava o PHP rápido eu tenho algo pra te dizer, ele está 2 vezes mais rápido !!

  • A versão 7 é até duas vezes mais rápido que o PHP 5.6
  • Suporte de 64 bits consistente
  • Muitos erros fatais são agora Exceções
  • Remoção de SAPIs e extensões antigas e sem suporte
  • O operador nulo coalescente (??)
  • Operador de comparação combinada (<=>)
  • Declarações do tipo de retorno
  • Declarações tipo escalar
  • Classes anônimos

Vamos a alguns exemplos desses caras acima:

Coalesce Operator

<?php 
echo false ?? 'B'; // B
echo null ?? 'B'; // B

var_dump(2 ?? 3 ? 4 : 5);// (2 ?? 3) ? 4 : 5 => int(4)
$x1 = NULL; 
$x2 = NULL;
$x3 = 3;
var_dump($x1 ?? $x2 ?? $x3); // int(3)
var_dump(0 || 2 ?? 3 ? 4 : 5); // int(4) 
function bla() {     
echo "Testando";
}
var_dump(true ?? bla()); // bool(true)
?>

Operador de comparação combinada

Retornos:

  • 0 se são iguais
  • 1 se o da esquerda é o maior
  • -1 se o da direita é o maior

Ou seja: [ <, <=, ==, >=, > ]

Exemplos:

// Integers 
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1
// Floats 
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1
// Strings 
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1
echo "a" <=> "aa"; // -1
echo "zz" <=> "aa"; // 1
// Arrays 
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
// Objects 
$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   // only values are compared 
$a = (object) ["a" => "b"];  
$b = (object) ["b" => "b"];
echo $a <=> $b; // 0

Declarações do tipo de retorno

<?php 
function get_config(): array {
return 42;
}
get_config();  

function answer(): int {
return 42;
}

answer();
?>

Declarações tipo escalar

Para que tenha uma rigorosa checkagem de tipos é necessário ativar, basta fazer:

<?php 
declare(strict_types=1);
?>

Logo no inicio do arquivo, depois disso todas as funções e metodos que estão nesse arquivo serão rigorosamente verificadas.

Exemplos:

<?php 
function soma(float $a, float $b) {
return $a + $b;
}
soma(1, 2); // float(3) 
soma(1.1, 2.2); // float(3.3)
soma("1", "2"); // Erro - a non well formed numeric value encountered
function soma(int $a, int $b) {     
return $a + $b;
}
soma(10, 20); // float(30) 
soma("1", "2"); // Erro - Argument 1 passed to soma() must be of the type integer, string given
?>

Anonymous Class

<?php 
var_dump(new class($i) {
public function __construct($i) {
$this->i = $i;
}
});
$bla->setMsg(new class {       
public function log() {
echo "Oi galerinha !";
}
});
?>

PHP7 Doc


Originally published at cristianounix.github.io on June 29, 2015.

Like what you read? Give Cristiano Oliveira a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.