Conheça algumas mudanças no PHP 7

testou o novo PHP7?

O novo PHP trás algumas mudanças que serão abordadas a seguir, inclusive um desempenho que pode ser de 10-25% superior se comparada a versão 5.
A nova versão está muito robusta, e alguns provedores já estão disponibilizando hospedagens com versão 7 do php.

Agora que o PHP 7.0 está finalmente lançado, cabe aos usuários PHP decidir se e quando eles vão adotá-lo em seus projetos.

php-v7

Então vamos lá conferir o que tem de novo nessa nova versão!

Novo Operador de comparação. <=>

Semelhante aos <, <=, ==, > e >=, mas caso a comparação seja idêntica, seu retorno será 0. Se o valor da esquerda for maior, retornará 1, se o valor da direita que for maior, retornará -1.

Exemplo:


// Integers
echo 1 = 1; # Retorna 0
echo 1 = 2; # Retorna -1
echo 2 = 1; # Retorna 1

// Floats
echo 1.5 = 1.5; # Retorna 0
echo 1.5 = 2.5; # Retorna -1
echo 2.5 = 1.5; # Retorna 1

// Strings
echo "a" = "a"; # Retorna 0
echo "a" = "b"; # Retorna -1
echo "b" = "a"; # Retorna 1
echo "a" = "aa"; # Retorna -1
echo "zz" = "aa"; # Retorna 1

// Arrays
echo [] = []; # Retorna 0
echo [1, 2, 3] = [1, 2, 3]; # Retorna 0
echo [1, 2, 3] = []; # Retorna 1
echo [1, 2, 3] = [1, 2, 1]; # Retorna 1
echo [1, 2, 3] = [1, 2, 4]; # Retorna -1

// Objects
$a = (object) ["a" = "b"];
$b = (object) ["a" = "b"];
echo $a = $b; # Retorna 0

// Objects
$a = (object) ["a" = "b"];
$b = (object) ["a" = "c"];
echo $a = $b; # Retorna -1

// Objects
$a = (object) ["a" = "c"];
$b = (object) ["a" = "b"];
echo $a = $b; # Retorna 1

// Apenas valores são comparados
$a = (object) ["a" = "b"];
$b = (object) ["b" = "b"];
echo $a = $b; # Retorna 0

Operador de coalescência nula

O operador de coalescência nula (??) foi adicionado como um truque para o caso trivial de uso de um ternário em conjunto com a função isset(). Retornará o primeiro operando se este existir e não for NULL; caso contrário retornará o segundo operando.

Exemplo:

<?php

// Retorna o valor de $ _GET ['user'] e retorna 'nobody'
// Se ele não existir.
$username = $_GET['user'] ?? 'nobody';

// Isso é equivalente a:
$ Username = isset ($ _ ['user'] GET)? $ _GET ['User']: 'nobody';
 
// Coalescing podem ser encadeadas: isso irá retornar o primeiro
// Valor definido de $ _GET ['user'], $ _ POST ['user'], e 'nobody'
$username = $_GET['user'] ?? $_POST['user'] ?? 'nobody';

?>

Remoção de Tags Alternativas

Tags alternativas para abrir e fechar código PHP foram removidas:

  • <% %>,
  • <%= %>,
  • <script language=”php”> </script>.

Palavras reservadas.

Novas palavras reservadas, incluindo os nomes dos tipos de dados primitivos (int, float, bool, string, true, false, null) além de resource,object, scalar, mixed e numeric. Essas palavras não poderão ser usadas em namespaces, nomes de classes, traits e interfaces.

Mudança na tipagem.

Para alguns programadores uma grande deficiência no PHP era ah de não definirmos o tipo de variáve. Mas como o PHP sempre vem melhorando e buscando atender aos pedidos da comunidade, eis que surgem o que todos queriam. Alem de deixar o código mais organizado, para grandes projetos vc poderá definir quanto de memoria irá utilizar baseado no tipo de variável.

No Java, por exemplo, o tipo do dado colocado no lado do identificador de acesso, como por exemplo:


public int getQuantidade() {
   return this.quantidade;
}

public void setQuantidade(int quantidade) {
   this.quantidade = quantidade;
}

No PHP 7, o mesmo código acima poderá ser escrito da seguinte forma:


public function getQuantidade(): int {
   return $this->quantidade;
}

public function setQuantidade($quantidade): void {
   $this->quantidade = $quantidade;
}

Operador para divisão de inteiros.

O novo operador (%%) e uma nova função (intdiv) que permitem a divisão de um inteiro por outro, retornando um inteiro ao invés de um float. Desta forma, 3 %%2 (ou intdiv(3, 2)) resultaria em 1 enquanto 3 / 2 resultaria em 1.5.


var_dump(intdiv(3,2));
var_dump(intdiv(-3,2));
var_dump(intdiv(3,-2));
var_dump(intdiv(-3,-2));

Fim do mysql_

Vários devs tem visto a mensagem Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead. O problema é que o alerta já é antigo, porem muito vem ignorando esse alerta até então.  Agora o mysql será removido, dessa forma será obrigado a utilizar o PDO ou mysqli, disponível desde a versão 5 do PHP.

Classes Anônimas

Funções anônimas (closures), classes anônimas são úteis quando apenas criadas e/ou utilizadas em tempo de execução.


<?php
var_dump((new class {
     public function execute() { return 12345; }
})->execute()); // 12345
?>

 

Deixe aqui suas sugestões e comentários para que possamos melhorar cada dia mais.

Com Informações