Postado em 8 de setembro de 2014
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!
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