Quais as principais mudanças do PHP versão 5.2 para 5.3?

De Wiki
Ir para: navegação, pesquisa

Listamos a seguir as principais mudanças na atualização do PHP 5.2 para 5.3, conforme documentação oficial. Para mais informações consulte: http://php.net/manual/pt_BR/migration53.php

Incompatibilidade com versão anterior:

  • A nova API interna de compilação de parâmetro foi aplicada em todas as extensões embarcadas com o PHP 5.3.x. Esta API de compilação de parâmetro faz com que as funções retornem NULL quando parâmetros incompatíveis são enviados. Existem algumas exceções a esta regra, como:
  • a função get_class(), que continua retornando FALSE para erros;
  • clearstatcache() não limpa mais o cache do realpath por padrão;
  • realpath() agora é totalmente independente da plataforma;
  • A família de funções do call_user_func() agora propagam $this mesmo que o invocador seja uma classe pai;
  • As funções para array natsort(), natcasesort(), usort(), uasort(), uksort(), array_flip(), e array_unique() não aceitam mais objetos enviados como argumentos;
  • Qualquer código anterior passando constantes ou literais para funções esperando referências, devem ser alterados para associar o valor a uma variável antes de chamar a função;
  • A nova biblioteca do mysqlnd não lê os arquivos de configurações do mysql (my.cnf/my.ini);
  • A / no final foi removida da classe SplFileInfo e outras classes de diretórios relacionados;
  • O método mágico __toString() não aceita argumentos;
  • Os métodos mágicos __get(), __set(), __isset(), __unset(), e __call() devem sempre ser declarados como public e não podem ser static;
  • O método mágico __call() agora é invocado no acesso de métodos private e protected;
  • func_get_arg(), func_get_args() e func_num_args() não podem mais ser chamadas do escopo mais alto de um arquivo que foi incluído pela função include ou require de dentro da função no arquivo que fez a chamada;
  • hash s2k não está mais disponível no PHP 5.3.x.


Novos recursos:

  • Suporte para namespaces foi adicionado;
  • Suporte para Late Static Bindings foi adicionado;
  • Suporte para jump labels (limitado a goto) foi adicionado;
  • Suporte nativo para Closures (função Lambda/Anônima) foi adicionado;
  • Existem dois novos métodos mágicos, __callStatic() e __invoke();
  • A sintaxe Nowdoc é suportada agora, similar a sintaxe Heredoc , mas com aspas simples;
  • Agora é possível usar Heredocs propriedades/constantes de classes, para inicializar variáveis estáticas e Heredocs pode ser declarado com aspas duplas, complementando a sintaxe do Nowdoc;
  • Constantes pode ser declaradas fora da classe usando o palavra chave const;
  • O operador ternário agora tem uma forma de atalho: ?:;
  • O HTTP stream wrapper agora considera todos os códigos de status do 200 ao 399 como status de sucesso;
  • Acesso dinâmico a métodos estáticos agora é possível.