Incompatibilidades con versiones anteriores
Si bien casi todo el código existente en PHP5 debe funcionar sin realizar
cambios, por favor, tenga en cuenta las siguientes incompatibiidades
con respecto a versiones anteriores:
-
La nueva API encargada de interpretar parámetros internos ha sido aplicada
en todas las extensiones que incluye PHP 5.3.x. Esta API de interpretación
de parámetros provoca que las funciones devuelvan
NULL
cuando se le proporcionen
parámetros incompatibles. Existen algunas excepciones a esta regla, como la función
get_class(), que seguirá devolviendo FALSE
en caso de error.
-
clearstatcache() ya no limpia por omisión la caché de la ruta real.
-
realpath() ahora es completamente independiente
de la plataforma. Como consecuencia, las rutas relativas inválidas como
por ejemplo __FILE__ . "/../x" ya no funcionan.
-
La familia de funciones call_user_func() ahora propagan
$this incluso en llamadas desde clases padre.
-
Las funciones de array natsort(),
natcasesort(), usort(),
uasort(), uksort(),
array_flip(), y array_unique() ya
no aceptan objetos como parámetros. Para poder realizarlo, primero debe
convertir el objeto en un array.
-
Ha cambiado el comportamiento de funciones con parámetros por referencia llamados
por valor. Donde antes se aceptaban parámetros por valor, ahora se emite
un error fatal. Todo código anterior que proporcionara constantes o valores
literales a funciones que esperan variables por referencia, necesitarán
modificarse para asignar el valor a una variable antes de llamar a la función.
-
La nueva biblioteca mysqlnd necesita el uso del nuevo formato de contraseñas
de 41 bytes de MySQL 4.1. Si se continua usando las antiguas contraseñas
de 16 bytes, mysql_connect() y otras funciones similares
emitiran el error, "mysqlnd cannot connect to MySQL 4.1+ using old
authentication."
-
La nueva biblioteca mysqlnd no lee el fichero de configuración de mysql
(my.cnf/my.ini), tal y como hacía la anterior biblioteca de libmysqlclient. Si su código
depende de los ajustes de dicho fichero de configuración, puede cargarlo explícitamente
con la función mysqli_options(). Tenga en cuenta que esto significa que
las constantes específicas de PDO
PDO::MYSQL_ATTR_READ_DEFAULT_FILE
y PDO::MYSQL_ATTR_READ_DEFAULT_GROUP
no estarán definidas si el
soporte de MySQL en PDO está compilado con mysqlnd.
-
La / final se ha eliminado de la clase SplFileInfo
y de otras clases de directorios relacionadas.
-
El método mágico __toString
ya no acepta parámetros.
-
Los métodos mágicos
__get,
__set,
__isset,
__unset,y
__call deben ser siempre públicos,
y ya no pueden ser estáticos. La definición de estos métodos es obligatoria.
-
Ahora se invoca al método mágico __call
cuando se accede a métodos privados y protegidos.
-
func_get_arg(), func_get_args() y
func_num_args() ya no pueden ser llamados desde
el ámbito de un fichero que se ha incluido llamando a
include o require desde
una función desde el fichero llamado.
-
Se ha añadido una capa que emula la extensión MHASH para envolver la
extensión Hash. En cualquier caso, no cubre todos los algoritmos, a destacar
el algoritmo de hash s2k. Esto significa que desde PHP 5.3.0 ya no está
disponible el hash con s2k.
Las siguientes palabras clave son ahora reservadas y no se pueden utilizar
ni en nombres de funciones, ni de clases, etc.