Mudanças incompatíveis com versões anteriores
Embora a moir parte do código PHP 5 existente deva funcionar sem nenhuma alteração, por favor esteja ciente de
que existem algumas mudanças incompatíveis:
-
A nova API interna de compilação de parametro foi aplicada em todas as extensões
embarcadas com o PHP 5.3.x. Esta API de compilação de parametro faz com
que as funções retornem
NULL
quando parametros incompatíveis
são enviados. Existem algumas exceções a esta regra, como a função get_class(),
que continua retornando FALSE
para errors.
-
clearstatcache() não limpa mais o cache do realpath
por padão.
-
realpath() agora é totalmente indepentende da plataforma.
A consequência disto é que caminhos relativos inválidos como
__FILE__ . "/../x" não vão mais funcionar.
-
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. Para continuar enviando
objetos, primeiro converta o objeto para um array.
-
O comportamento de funções com parametros por referência mas chamadas pelo valor mudou. Onde antes a função
aceitaria um argumento pelo valor,
um erro falta é emitido. 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 precisa precisa do novo formato de senhas do MySQL 4.1 com 41 bytes.
O uso do antigo formato de 16 bytes faz com que o
mysql_connect() e funções similares emitam o erro:
"mysqlnd cannot connect to MySQL 4.1+ using old
authentication."
-
A nova biblioteca do mysqlnd não lê os arquivos de configurações do mysql
(my.cnf/my.ini), como a antiga biblioteca faz. Se seu código confia nas configurações contidas no
arquivo de configuração, você pode ler explicitamente com a função
mysqli_options(). Perceba que isso significa que as constantes
específicas do PDO
PDO::MYSQL_ATTR_READ_DEFAULT_FILE
e PDO::MYSQL_ATTR_READ_DEFAULT_GROUP
não serão definidas se o suporte ao
MySQL no PDO for compilado com o mysqlnd.
-
A / no final foi removida da classe SplFileInfo
e outras classes de diretórios relacionados.
-
O método mágico __toString()
não mais aceita argumentos.
-
Os métodos mágicos
__get(),
__set(),
__isset(),
__unset(), e
__call() devem sempre
ser declarados como public e não podem mais ser static. As assinaturas de método agora são obrigatórias.
-
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.
-
Uma camada de emulação para a extensão MHASH para encapsular a extensão Hash
foi adicionada. Entretando nem todos os algorítimos foram cobertos, notavelmente
o algorítimo de hash s2k. Isso significa que o s2k não está mais disponível
no PHP 5.3.0.
As seguintes palavras chaves agora estão reservadas e não podem ser utilizadas em funções,
classes, nomes e etc.