PHP 5.6.0 lançado! Quais as novidades?

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
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;
?>

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
class A {
    private $prop;

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

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

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

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();
}
?>

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

  • Interessante acompanhar a evolução do PHP por aqui!
    Valeu, man.