Novidades do PHP 5.6

Artigo que apresenta uma lista com as novidades do PHP 5.6.0, juntamente com as mudanças anunciadas em cada versão Alpha e Beta.

Introdução

O ano de 2013 terminou e foi marcado pelo lançamento do PHP 5.5, com ótimas novidades. Mas chegou 2014 e, logo no começo do ano, já temos o lançamento da primeira versão ALPHA do PHP 5.6. Isso mesmo! O ciclo de desenvolvimento do PHP parece estar a todo vapor. Além disso, o exame de certificação em PHP já se atualizou e agora as perguntas são baseadas na versão 5.5 do PHP.

Neste artigo, vamos dar uma olhada inicial nas principais características anunciadas para o PHP 5.6, lembrando que esta versão ainda é ALPHA, ou seja, ainda é instável e pode sofrer mudanças até o lançamento oficial da versão 5.6.0. Conforme serão anunciadas as novidades em outras versões ALPHA, BETA e Release Candidate, vou atualizando este artigo para que fique completo.

Novidades anunciadas na versão 5.6.0 ALPHA 1

  • Nova sintaxe para declaração de funções variádicas (aquelas funções que aceitam um número impreciso de parâmetros, como a "printf").
  • Nova sintaxe para desempacotamento de parâmetros em funções e métodos, que permite passar vários parâmetros para uma função a partir dos dados de um array.
  • Suporte a declaração de constantes com expressões escalares.
  • Implementado um operador interno para sobrescrita de operadores.
  • Inclusão da nova SAPI phpdbg para depurações.
  • Melhorias de performance e otimizações na Zend Engine (IS_VAR, checagem de string vazia).
  • Pequenas melhorias no servidor embutido do PHP (novos Mime-types adicionados).
  • Possibilidade de Upload de tamanho superior a 2GB.
  • Depreciação de algumas chamadas de métodos em contextos inválidos (por exemplo, chamar de forma estática um método que utiliza o $this).
  • Depreciação da ativação da diretiva de configuração "always_populate_raw_post_data", que servia para popular a variável superglobal $HTTP_RAW_POST_DATA.
  • Correção de bugs.
  • Melhorias em extensões:
    • Curl: correção de bug.
    • GMP: reestruturado para usar objetos ao invés de variáveis resources.
    • Hash: adicionado novo algoritmo de codificação (CryptoPro S-box).
    • JSON: correção de bug.
    • mysqlnd: desabilitada flag para variáveis SP OUT em servidores superiores à versão 5.5.
    • OPCache: otimizações diversas.
    • OpenSSL: adição de novos recursos e correção de bugs.
    • PDO_pgsql: correção de bugs.
    • pgsql: melhorias diversas.
    • Session: correção de bug e criação das funções session_serializer_name, session_abort, session_reset e session_gc.
    • Standard: mudança no comportamento da função crypt, quando não é passado um sal. Mudança na função array_fill para conseguir criar array vazio.
    • XMLReader: correção de bug.
    • Zip: melhorias diversas e possibilidade de definir uma senha.

Neste lançamento, o que mais me chamou a atenção foi a nova sintaxe para funções variádicas (deixa o código mais elegante) e a melhoria para se trabalhar com números muito grandes (antes precisava usar BC ou GDB na forma de funções para realizar as operações).

Novidades anunciadas na versão 5.6.0 ALPHA 2

  • Novo operador expoente (**) para aposentar a função pow.
  • Melhorias no mysqli.
  • Atualização de versão do PCRE.

Neste lançamento, nada revolucionário. Apenas um operador novo, para deixar mais legível operações matemáticas envolvendo expoente.

Novidades anunciadas na versão 5.6.0 ALPHA 3

  • Criação de novo método mágico __debugInfo para depuração.
  • Utilização do valor da diretiva de configuração default_charset para ser o valor padrão para algumas funções que recebem o charset por parâmetro (exemplo: htmlentities, htmlspecialchars, etc). Não se aplica para escapeshellcmd, escapeshellarg, fgetcsv e funções relacionadas a bancos de dados.
  • Melhorias na extensão cURL.
  • Upgrade e correção de bug da extensão Fileinfo.
  • Nova configuração para FPM.
  • Correção de bugs na extensão GD e JSON.
  • Melhorias na extensão OPCache.
  • Várias melhorias na extensão OpenSSL.
  • Melhorias na extensão pgsql (banco de dados PostgreSQL).

Neste lançamento, destaco o novo método mágico __debugInfo, a utilização de config para codificação padrão de algumas funções e o pacotão de melhorias da extensão OpenSSL.

Novidades anunciadas na versão 5.6.0 BETA 1

  • Criação do método SplFileObject::fread (similar à função fread).
  • Criação do método DateTimeImmutable::createFromMutable para criar uma DateTime imutável a partir de um objeto DateTime convencional (mutável).
  • Criação da função hash_equals para prevenção de timing attack no PHP.
  • Ajuste na função hash_pbkdf2 para funcionar corretamente se não passar o parâmetro $length.
  • Alteração nas funções da extensão Mcrypt para não permitir tamanhos de chave inválidos.
  • Melhorias e correções na extensão OpenSSL.
  • Suporte a marcações em expressões regulares compatíveis com perl (PCRE).
  • Reestruturação da extensão PDO_pgsql (conexão com PostgreSQL) para utilizar recursos da libpq, depreciação de PDO::PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT e inclusão de PDO::PGSQL_ATTR_DISABLE_PREPARES.
  • Melhorias na extensão pgsql para permitir conexões assíncronas com PostgreSQL.
  • Remoção de session_gc e session_serializer_name (introduzidas na versão alpha).
  • Correções de vários bugs.

Neste lançamento, destaco a função hash_equals e o método SplFileObject::fread que incomodava pela sua ausência.

Novidades anunciadas na versão 5.6.0 BETA 2

  • Adicionado um novo modo de fetch no mysqlnd.
  • Adicionado o comando watch ao phpdbg para servir de watchpoints para depuração.
  • Correções de vários bugs.

Neste lançamento, nada de especial. Apenas muitos bugs corrigidos.

Anúncio da versão 5.6.0 BETA 3

Este lançamento apenas corrigiu bugs de versões anteriores.

Anúncio da versão 5.6.0 BETA 4

Este lançamento foi a última versão beta e apenas corrigiu bugs de versões anteriores.


Em breve, escreverei artigos específicos para explicar as funcionalidades mais relevantes que forem anunciadas. Então, siga o blog para não perder nenhuma novidade.

1 comentário

Unknown disse...

Olá Rubens,
Não sei se neste espaço cabe esta sugestão, já que este artigo refere-se a novidades, seria interessante falar sobre o composer com exemplos praticos? Já que este gerenciador está sendo cada vezmais utilizado e gostaria devereste assunto ser abordado com sua didatica.