PHP 5.6.0 lançado! Quais as novidades?

Atenção! Essa postagem foi escrita há mais de 2 anos. Na informática tudo evolui muito rápido e algumas informações podem estar desatualizadas. Embora o conteúdo possa continuar relevante, lembre-se de levar em conta a data de publicação enquanto estiver lendo. Caso tenha sugestões para atualizá-la, não deixe de comentar!

PHP Logo

No dia 28 de agosto de 2014 foi lançada a versão 5.6.0 do PHP.

Escrevo este rápido artigo apenas para listar algumas das novas funcionalidades dessa versão. Caso você queira mais detalhes sobre as novidades e sobre como migrar, visite a página oficial PHP 5.6 new features.

Expressões com constantes escalares

Agora é possível fornecer uma expressão escalar envolvendo números e strings e/ou constantes em contextos que anteriormente o PHP esperava um valor estático, como em declaração de constantes e propriedades e na definição de argumentos padrão para funções.

[php]<?php
const UM = 1;
const DOIS = UM * 2;

class C {
const TRES = DOIS + 1;
const UM_TERCO = UM / self::TRES;
const SENTENCA = ‘O valor de TRES e ‘.self::TRES;

public function f($a = UM + self::TRES) {
return $a;
}
}

echo (new C)->f()."\n";
echo C::SENTENCA;
?>[/php]

O exemplo acima retornará:

[code]4
O valor de TRES e 3[/code]

__debuginfo()

Foi uma das novidades que mais gostei. Agora e possível utilizar o método mágico __debuginfo() para modificar as propriedades e valores que são mostrados quando o objeto é chamado por um var_dump().

[php]<?php
class A {
private $prop;

public function __construct($valor) {
$this->prop = $valor;
}

public function __debugInfo() {
return [
‘propQuadrado’ => $this->prop ** 2,
];
}
}
var_dump(new A(42));
?>[/php]

O exemplo acima retornará:

[code]object(A)#1 (1) {
["propQuadrado"]=>
int(1764)
}[/code]

use function e use const

The use operator has been extended to support importing functions and constants in addition to classes. This is achieved via the use function and use const constructs, respectively.

O operador use agora suporta importação de funções e constantes, além de classes. Você pode fazer isso a partir de use function e use const.

[php]<?php

namespace Name\Space {
const FOO = 42;
function f() { echo __FUNCTION__."\n"; }
}

namespace {
use const Name\Space\FOO;
use function Name\Space\f;

echo FOO."\n";
f();
}
?>[/php]

O exemplo acima retornará:

[code]42
Name\Space\f[/code]

E mais

Além dessas funcionalidades que comentei, ainda está incluso no pacote:

  • Adicionado suporte a MIME type no CLI
  • São aceitos uploads maiores que 2GB
  • Suporte a funções variádicas e desempacotamento de argumentos (já falei sobre isso aqui)
  • PHPDBG embutido por padrão
  • Melhorias na extensão Zip
  • UTF-8 agora é padrão
  • Exponenciação via ** ($variavel = 3**2;)
  • O wrapper php://input agora pode ser aberto quantas vezes for necessário, o que levou a uma redução da memória utilizada pelo POST

 

E você? Já experimentou essa versão? Deixe uma mensagem com seus comentários sobre mais essa atualização do PHP rumo à versão 6!

Não se esqueça que todas as novas funcionalidades estão comentadas no blog oficial do PHP.

Um abraço a todos e fiquem com Deus.
Rafael Jaques