Lançado o PHP 5.6 Artigo

Conheça os cursos gratuitos do WebDevBr! - Inscreva-se!


Este artigo foi publicado a 3 anos, 2 meses, 4 semanas atrás.

E acaba de sair o PHP 5.6.0 cheio de novidades, como não sou do tipo que fica pra traz já dei uma estudada e gostei muito do que ví, vou dar uma passada com alguns exemplos e também deixar o anuncio oficial traduzido aqui pra vocês.

Antes de continuar vou também avisar que a alguns dias está disponível o PHP 5.5.16 e o 5.4.32, se você usa as versões 5.5.x ou 5.4.x atualize-se.

Expressões escaláveis em constantes

Isso é muito legal, anteriormente só podíamos declarar um valor fixo em constantes, agora podemos usar expressões envolvendo strings e literais numéricos aonde o resultado deve ser um valor estático, o exemplo dado na documentação e traduzido por mim é:

Gostou deste artigo?

Receba atualizações semanais com novos artigos do WebDevBr e outras dicas!

<?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 é'.self::TRES;

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

echo (new C)->f()."n";
echo C::SENTENCA;

O resultado aqui seria 4 na primeira linha e "O valor de TRES é 3" na segunda, mas você pode copiar e rodar localmente no seu servidor devidamente atualizado para a nova versão.

Funções variádicas

Funções variádicas são aquelas aonde podemos passar uma quantidade não definida de parâmetros usando o operador "..." (três pontos), o exemplo original:

<?php
function f($req, $opt = null, ...$params) {
    // $params é um array contendo os parametros restantes.
    printf('$req: %d; $opt: %d; quantidade de parâmetros: %d'."n",
           $req, $opt, count($params));
}

f(1);
f(1, 2);
f(1, 2, 3);
f(1, 2, 3, 4);
f(1, 2, 3, 4, 5);
</code></pre>

E isso retorna:

$req: 1; $opt: 0; quantidade de parâmetros: 0
$req: 1; $opt: 2; quantidade de parâmetros: 0
$req: 1; $opt: 2; quantidade de parâmetros: 1
$req: 1; $opt: 2; quantidade de parâmetros: 2
$req: 1; $opt: 2; quantidade de parâmetros: 3

Logo de cara já imaginei uma função pra me ajudar a gerar HTML, aonde eu indico uma tag no primeiro parâmetro e as demais vão construindo os atributos da tag, mas claro, ainda me vem muita coisa na cabeça, só deixei um exemplo pra vocês.

Argumentos descompactáveis

Ainda seguindo a ideia do splat (operador "...", o nome vem do Ruby) temos o processo inverso, aonde você pode passar um array para uma função variádica ou não e ela vai definir cada valor do array em um parâmetro, assim:

<?php
function add($a, $b, $c) {
    return $a + $b + $c;
}

$operators = [2, 3];
echo add(1, ...$operators);

O resultado será 6 na tela.

Exponenciação com **

Se você não sabe o que é exponenciação também não vai entender este novo operador ("é um baratinho de matemática", kkk)

Assim como você faz com $a + $b ou $a - $b para usar exponenciação faça $a**$b ou seja $a elevado a $b.

Importar funções e constantes com use

Até então podíamos importar classes com o use, agora o mesmo pode ser feito com funções e constantes, super simples:

<?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 resultado seria:

42
Name\Space\f

phpdg

Agora os debugs da linguagem ficaram muito mais fáceis e interativos com a biblioteca phpdb. Aqui para saber mais (em inglês)

Codificação de caracter padrão

Agora o valor padrão do default_charset foi alterado de vazio para UTF-8, meio óbvio até, não sei porque demorou tanto.

php://input reutilizável

Tradução direta:

php://input agora pode ser reaberto e lido quantas vezes forem necessárias. Este processo também resultou em uma redução significativa de memória necessária para lidar com dados POST.

Aqui um pouco sobre o php://input que já está disponível a um tempo, caso você não saiba.

Upload de arquivos muito grandes

Não é pra todo mundo o benefício, mas muita gente vai curtir. Agora é possível fazer uploads maiores que 2GB.

Objetos GMP agora suportam sobrecarga de operador.

Em outras palavras você vai ter um código mais elegante.

<?php
$a = gmp_init(42);
$b = gmp_init(17);

// antes do php 5.6:
var_dump(gmp_add($a, $b));
var_dump(gmp_add($a, 17));
var_dump(gmp_add(42, $b));

// Agora:
var_dump($a + $b);
var_dump($a + 17);
var_dump(42 + $b);

Algoritmo de hash gost-crypto

Tradução direta:

Foi adicionado o algoritmo de hash gost-crypto. Este implementa a função de hash GOST utilizando as tabelas CryptoPro S-box conforme especificado por » RFC 4357, seção 11.2

Melhorias em SSL/TLS

Entre outras palavras: impressões digitais

Tradução direta (via Google Translator):

A extensão OpenSSL foi estendido para incluir suporte para extrair e verificar as impressões digitais de certificados. opensslx509fingerprint () foi adicionada para extrair uma impressão digital de um certificado X.509, e foram adicionadas duas opções SSL contexto stream: capturepeercert para capturar o certificado X.509 do par, e peer_fingerprint afirmar que o certificado do cliente deve corresponder a impressão digital dada .

Além disso, um método de criptografia específica, como SSLv3 ou TLS podem agora ser selecionados, definindo a opção crypto_method contexto fluxo SSL. As opções possíveis incluem STREAMCRYPTOMETHODSSLv2CLIENT, STREAMCRYPTOMETHODSSLv3CLIENT, STREAMCRYPTOMETHODSSLv23CLIENT (o padrão), ou STREAMCRYPTOMETHODTLSCLIENT.

Compatibilidade

Algumas alterações também vão afetar a compatibilidade com:

  • Os índices das matrizes não serão substituídos ao definir uma matriz como uma propriedade de uma classe através de uma matriz literal.
  • json_decode agora é mais rigoroso quanto a sintaxe Json
  • Stream wrappers agora verificam certificados de mesmo nível e nomes de host por padrão quando usados
  • Os recursos do GMP agora são objetos
  • Funções Mcrypt agora exigem chaves válidas e IVs.

Conclusão

É isso, tem muita coisa nova e bacana na nova versão do PHP, se atualizem e acessem a página abaixo para saber como migrar do PHP 5.5.x para o 5.6.x:

Migrando do PHP 5.5.x para o PHP 5.6.x

Anuncio oficial do PHP 5.6.0

É isso ai, bons estudos.


Cursos relacionados


* Parcelamento apenas cartão de crédito! Pode haver uma pequena variação no parcelamento em relação a simulações apresentadas!