PHP 5.4 (preparado para o futuro?)

Artigo que apresenta os novos recursos previstos para o PHP 5.4.

PHP 5.4 direto do futuro
Introdução

Mal foi lançada a Release Candidate do PHP 5.3.7 e, já no dia 28/06/2011, foi disponibilizada a primeira versão do PHP 5.4 alpha. Esta versão não deve ser utilizada no ambiente de produção, apenas no ambiente de desenvolvimento para caráter de teste da nova engine.

Este artigo apresenta algumas das principais mudanças e opiniões pessoais sobre a futura versão do PHP.


Mudança no Ciclo de Desenvolvimento do Projeto PHP

Bom, além do lançamento da versão 5.4 alpha, a equipe de desenvolvimento do PHP também anunciou a nova estratégia de ciclo de desenvolvimento do PHP, que define a periodicidade que serão lançadas as versões do PHP, além do prazo de validade de cada uma, ou seja, até quando será dado suporte à versão. A estratégia pode ser vista neste link:
PHP Release Process

Basicamente a ideia é que uma sub-versão (segundo número da versão X.Y.Z) fique em fase de pre-release por um semestre (versões alpha e release candidate); fique ativa por dois anos; e seja suportada por mais um ano para correção de falha de segurança (paralelamente ao início de uma nova versão estável). Cada sub-versão deverá ser lançada a cada ano, tendo fases que correrão em paralelo entre versões diferentes. No link apresentado são incluídos alguns exemplos de ciclo de vida de versões.

Quanto à numeração utilizada, o padrão será o seguinte:

  • Versões X.Y.Z (terceiro número) incluirão correções de bugs e manterão compatibilidade com versões anteriores.
  • Versões X.Y.Z (segundo número) incluirão novos recursos, mas mantendo a compatibilidade para a linguagem (podem ter incompatibilidades a nível de API).
  • Versões X.Y.Z (primeiro número) incluirão novos recursos, mas podem perder compatibilidade com versões anteriores.

Particularmente, me agrada ver novos recursos a cada ano.


Mudanças e Novos Recursos do PHP 5.4

A lista completa de mudanças do PHP 5.4 está disponível em Mudanças do PHP 5.4. Resumidamente, posso destacar:

  • Alguns recursos legados foram definitivamente removidos (especialmente register_globals, allow_call_time_pass_reference, algumas funções de session e o safe mode)
  • <?= agora está disponível sempre (independente do valor de short_tags setting)
  • Suporte a Traits
  • Derreferenciamento de array (poder usar colchetes sobre elementos que retornam array)
  • Possibilidade de invocar um callback montado na forma de array
  • Possibilidade de limitar a profundidade avaliada em debug_backtrace
  • Várias melhorias de utilização de memória e performance da engine
  • Pequenas melhorias em várias extensões

A principal melhoria que notei foi a inclusão de Traits. Pretendo escrever um artigo sobre isso em outra oportunidade.

Sobre o derreferenciamento de array, o funcionamento é muito simples. Agora é possível fazer algo assim:

function criar_array() {
    return array(1, 2, 3);
}

$x = criar_array()[1]; // $x recebe 2

Em versões antigas, era preciso atribuir o resultado do array em uma variável, depois obter a posição desejada a partir da variável.

4 comentários