call_user_func_array() no longer accepts null as a second parameter and calls the function. It now emits a warning and does not call the function.
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
NULLcuando se le proporcionen parámetros incompatibles. Existen algunas excepciones a esta regla, como la función get_class(), que seguirá devolviendoFALSEen 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 mysql. 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_FILEyPDO::MYSQL_ATTR_READ_DEFAULT_GROUPno 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 defunciones, ni de clases, etc.
Chris Bolt ¶
3 years ago
Olivier ¶
8 days ago
In PHP 5.2 this gives a syntax error but works in PHP 5.3:
<?php
array_values(array(1, 2, 3))[0];
?>
I'm not finding this information in the release notes. There doesn't seem to be a chapter on syntax.
munaw at munaw dot com ¶
2 years ago
gd_info():
Note:
Previous to PHP 5.3.0, the JPEG Support attribute was named JPG Support.
Be aware of this, in case you verify GD image support by this attribute!
mahbub at mahbubblog dot com ¶
2 years ago
If you're having the mysql connectivity problem for the short password format,there is a fix written by Mixu here
http://tinyurl.com/324pjer
Boris 'borzakov' Ploujoux ¶
2 years ago
For those who often use the short open tag notations <? ... ?> and mostly <?= $var ?> (useful for template files) instead of standard notation <?php ... ?> : be careful !
In 5.3 version, the setting directive of the first notation is not PHP_INI_ALL anymore but PHP_INI_PERDIR.
In other words, you can't enable the "short_open_tag" directive directly with ini_set() function anymore ; you'll now have to set it in php.ini or httpd.conf (if you have access to it), or per-dir with .htaccess files.
See : http://www.php.net/manual/en/ini.core.php#ini.short-open-tag
mitek17 sobaka gmail.com ¶
3 years ago
After php version > 5.2.9 flush() stopped working. As a result the output buffer will not be returned at all.
scott dot mcnaught at synergy8 dot com ¶
3 years ago
fopen('/dev/stdin/') no longer works
use fopen('php://stdin') instead
Cheers,
Scott
