Está en la página 1de 10

|

ID Computación e
Informática
AT

TEMA:
 Diferencias entre PHP 5.2.x a PHP
5.3.x
CICLO:
 V
PROFESOR
 Espinoza Muñoz, Percy Deiby
SECCIÓN:
 30505
Alumno:
 Talavera Garcia, Luis
INDICE
I. Qué ha cambiado en PHP 5.3.x
II. Incompatibilidades con versiones anteriores
III. Nuevas funcionalidades
IV. Cambios relativos al soporte en Windows
V. Funcionalidades obsoletas en PHP 5.3.x
VI. Funcionalidades que ya no son obsoletas en PHP 5.3.x
VII. Nuevos parámetros
VIII. Nuevas envolturas de flujos
IX. Nuevos filtros de flujos
X. Nuevas Constantes de Clases
XI. Nuevas Extensiones
XII. Extensiones Eliminadas
XIII. Otros cambios

2
I. Qué ha cambiado en PHP 5.3.x
La mayoría de las mejoras de PHP 5.3.x no tienen impacto en códigos
existentes. Hay unas cuantas incompatibilidades y nuevas funcionalidades que
se deben tener en cuenta, y en entornos de producción se debe someter a
pruebas el código antes de actualizar su versión de PHP.

II. 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 incompatibilidades 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 mysql. Si su código
3
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. Ahora hay una definición de
estos métodos 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.

III. Nuevas funcionalidades


PHP 5.3.0 ofrece un amplio rango de nuevas funcionalidades:
 Se ha añadido suporte para espacios de nombres.
 Se ha añadido soporte para Enlaces Estáticos en Tiempo de ejecución.
 Se ha añadido soporte para etiquetas de saltos (goto limitado).
 Se ha añadido soporte nativo para Funciones Anónimas (funciones
Lambda).
 Hay dos nuevos métodos mágicos, __callStatic y __invoke.
 Ahora hay soporte para sintaxis Nowdoc, similar a la sintaxis Heredoc, pero
con comillas simples.
 Ahora es posible utilizar Heredoc para inicializar tanto variables estáticas
como propiedades/constantes de clases.
 Ahora se puede declarar Heredocs usando comillas dobles,
complementando la sintaxis de Nowdoc.
 Ahora se pueden declarar Constants desde fuera de una clase utilizando la
palabra clave const.
 Ahora hay una forma reducida del operador ternario: ?:.

4
 La envoltura para flujos HTTP ahora considera los códigos de estado del
200 al 399 como éxito.
 Ahora es posible el acceso dinámico a métodos estáticos.
 Ahora se pueden anidra Excepciones.
 Se ha añadido un recolector de basuras para referencias circulares, y está
activado por omisión.
 La función mail() ahora soporta registros de correos enviados. (Nota: Esto
sólo se aplica a correos enviados mediante esta función.)

IV. Cambios relativos al soporte en Windows

Cambios respecto a las ediciones de Windows:

 La versión mínima de Windows es ahora Windows XP SP3; Windows 98,


ME, 2000 y NT4 ya no están soportados.
 Ahora se realizan binarios de Windows i586 y posteriores. Ya no se soporta
ni i386 ni i486.
 Ahora hay soporte experimental para PHP en versiones x64 de Windows.
 Ahora hay soporte para el compilador Visual C++ 9 (VC9), usando Visual
Studio 2008. Tanto las snapshots como las releases estarán ahora
disponibles para VC9. Al igual que con VC9, los antiguos binarios que
utilizan VC6 siguen estando soportados y lanzados.
 La biblioteca PDO_OCI php_pdo_oci8.dll (para usar con la versión 8 de las
bibliotecas clientes de Oracle) ya no se construyen. En su lugar, utilice
php_pdo_oci.dll (sin el '8') con las bibliotecas clientes de Oracle 10 o 11.
Todavía se soporta las conexiones a otras bases de datos.
 Para la extensión OCI8, está disponible la nueva biblioteca
php_oci8_11g.dll además de php_oci8.dll. Sólo puede haber una activa a la
vez. Utilice php_oci8.dll con la biblioteca cliente de Oracle 10.2. Utilice
php_oci8_11g.dll con las bibliotecas clientes de Oracle 11. Todavía se
soportan conexiones a otras versiones de bases de datos.

5
Se ha añadido soporte para Windows en las siguientes funciones:
 dns_get_record()
 fnmatch()
 getmxrr()
 getopt()
 imagecolorclosesthwb()
 inet_ntop()
 inet_pton()
 link()
 linkinfo()
 mcrypt_create_iv()
 readlink()
 socket_create_pair() - Esta función estuvo disponible anteriormente en
Windows, pero se desactivó en PHP 4.3.0 debido a un error de
programación.
 stream_socket_pair()
 symlink()
 time_nanosleep()
 time_sleep_until()

Otros cambios:

Mejorada la portabilidad de las funciones stat(), touch(), filemtime(), filesize(), y


de otras funciones similares (100% portable para los datos disponibles).

Ahora es posible crear enlaces duros en Windows utilizando la función link(), y


también enlaces simbólicos utiliza la función symlink(). Los enlaces duros están
disponibles desde Windows 2000, y los enlaces simbólicos desde Windows
Vista.

Las versiones de PHP para Windows ahora declaran un conjunto de constantes


con el prefijo PHP_WINDOWS_*. Puede encontrar una lista de estas
constantes y sobre su uso en Constantes predefinidas.

6
V. Funcionalidades obsoletas en PHP 5.3.x
PHP 5.3.0 introduce dos nuevos niveles de error: E_DEPRECATED y
E_USER_DEPRECATED. El nivel de error E_DEPRECATED se usa para
indicar que una función o funcionalidad está obsoleto. El nivel de error
E_USER_DEPRECATED tiene por objetivo indicar las funcionalidades
obsoletas en el código de usuario, de forma similar a los niveles de error
E_USER_ERROR y E_USER_WARNING.

La siguiente es una lista de directivas INI obsoletas. El uso de cualquiera de


estas directivas INI provocará un error E_DEPRECATED al arrancar.
 define_syslog_variables
 register_globals
 register_long_arrays
 safe_mode
 magic_quotes_gpc
 magic_quotes_runtime
 magic_quotes_sybase
 Ahora están obsoletos los comentarios en ficheros .INI que comienzan con
'#'.
Funciones obsoletas:
 call_user_method() (utilice en su lugar call_user_func())
 call_user_method_array() (utilice en su lugar call_user_func_array())
 define_syslog_variables()
 dl()
 ereg() (utilice en su lugar preg_match())
 ereg_replace() (utilice en su lugar preg_replace())
 eregi() (utilice en su lugar preg_match() con el modificador 'i')
 eregi_replace() (utilice en su lugar preg_replace() con el modificador 'i')
 set_magic_quotes_runtime() y su alias, magic_quotes_runtime()
 session_register() (utilice en su lugar la superglobal $_SESSION)
 session_unregister() (utilice en su lugar la superglobal $_SESSION)
 session_is_registered() (utilice en su lugar la superglobal $_SESSION)
 set_socket_blocking() (utilice en su lugar stream_set_blocking())
 split() (utilice en su lugar preg_split())
 spliti() (utilice en su lugar preg_split() con el modificador 'i')
 sql_regcase()
 mysql_db_query() (utilice en su lugar mysql_select_db() y mysql_query())
 mysql_escape_string() (utilice en su lugar mysql_real_escape_string())
 Ahora está obsoleto pasar nombres de categoría local como strings. Utilice
la familia de constantes LC_* en su lugar.
 El parámetro is_dst para mktime(). Utilice en su lugar las funciones de
manejo de zonas horarias.

7
VI. Funcionalidades que ya no son obsoletas
en PHP 5.3.x
La función is_a() vuelve a estar soportado por petición popular; ya no lanzará
un error E_STRICT.

VII. Nuevos parámetros


Se han añadido nuevos parámetros opcionales a algunas funciones en PHP
5.3:
Núcleo de PHP:

 clearstatcache() - Añadido clear_realpath_cache y filename.


 copy() - Añadido un parámetro del contexto de flujo de datos, context.
 fgetcsv() - Añadido escape.
 ini_get_all() - Añadido details.
 nl2br() - Añadido is_xhtml.
 parse_ini_file() - Añadido scanner_mode.
 round() - Añadido mode.
 stream_context_create() - Añadido params.
 strstr() y stristr() - Añadido before_needle.

VIII.Nuevas envolturas de flujos


Las siguientes envolturas de flujos se introdujeron en la versión 5.3.0:

 glob://
 phar://

IX. Nuevos filtros de flujos


Los siguientes filtros de flujos se introdujeron en la versión 5.3.0:

 dechunk (invierte la codificación fragmentada HTTP)


 El filtro bz2.decompress ahora soporta concatenaciones.

8
X. Nuevas Constantes de Clases
Se introdujeron varias constantes de clases nuevas en la versión 5.3.0:

PDO_FIREBIRD:
 PDO::FB_ATTR_DATE_FORMAT - Establece el formato de fechas.
 PDO::FB_ATTR_TIME_FORMAT - Establece el formato de horas.
 PDO::FB_ATTR_TIMESTAMP_FORMAT - Establece el formato de fecha
Unix.

XI. Nuevas Extensiones


Se han añadido (por omisión) las siguientes nuevas extensiones en PHP 5.3.0:
 Enchant - Una capa que abstrae sobre varias bibliotecas ortográficas.
 Fileinfo - Un reemplazo mejorado y más sólido, para la extensión Mimetype,
la cual ha sido eliminada.
 INTL - Extensión de Internacionalización. INTL es una envoltura de la
biblioteca » ICU.
 Phar - Implementación de los ficheros PHP-Archive.
 SQLite3 - Soporte para bases de datos SQLite versión 3.

mysqlnd es una nueva biblioteca del nucleo distribuida con PHP. Es un


reemplazo específico de PHP para libmysql. mysqlnd se utilizará para construir
las extensiones mysql, mysqli y PDO_MySQL si no se encontrara libmysql en el
sistema. También se puede utilizar en lugar de libmysql incluso cuando ésta
esté presente. Por razones de rendimiento, se recomienda mysqlnd en todas
las instalaciones de PHP.

XII. Extensiones Eliminadas


Estas extensiones han sido movidas a PECL y ya no son parte de la
distribución de PHP. Las versiones de los paquetes PECL de estas extensiones
serán creadas de acuerdo a la demanda de los usuarios.
 dbase - Ya no se mantiene
 fbsql - Ya no se mantiene
 fdf - Mantenida
 ming - Mantenida
 msql - Ya no se mantiene
 ncurses - Mantenida
 sybase - Discontinuada; utilice en su lugar la extensión sybase_ct
 mhash - Discontinuada; utiliza en su lugar la extensión hash. hash tiene
compatibilidad con mhash completa; todas las aplicaciones que utilicen las
funciones antiguas seguirán funcionando.

9
XIII. Otros cambios
 SplFileInfo::getpathinfo() ahora devuelve información sobre el nombre de la
ruta.
 SplObjectStorage tiene ahora soporte para ArrayAccess. Ahora también es
posible almacenar información asociativa con objetos en SplObjectStorage.
 Ahora, en la extensión GD, hay disponible soporte para pixelación mediante
la función imagefilter().
 La salida de var_dump() ahora incluye las propiedades de objeto privadas.
 session_start() devuelve ahora FALSE cuando falla el inicio de sesión.
 property_exists() comprueba ahora la existencia de una propiedad,
independientemente de su accesibilidad (al igual que method_exists()).
 Envolturas de Flujos. include_path puede ahora utilizar
 El parámetro initial de array_reduce() puede ser ahora de cualquier tipo.
 Las funciones de directorios opendir(), scandir(), y dir() utiliza ahora el
contexto de flujo por omisión si no se proporciona un contexto
explícitamente.
 crypt() tiene ahora soporte para Blowfish y extended DES, y las
funcionalidades de crypt() son ahora 100% portables. PHP tiene ahora su
propia implementación interna de crypt, la cual toma lugar cuando no se
encuentra soporte ni para crypt ni para crypt_r.
 getopt() now accepts "long options" on all platforms. Optional values and =
as a separator for short options are now supported.
 fopen() tiene ahora un nueva opción de modo (n), que pasa O_NONBLOCK
a la llamada del sistema subyacente open().Tenga en cuenta que este
modo no tiene actualmente soporte en Windows.
 getimagesize() tiene ahora soporte para ficheros de iconos (.ico).
 La extensión mhash se ha movido a PECL, pero se ha modificado la
extensión Hash para que tenga soporte para mhash en caso de que PHP se
compile con --with-mhash. Tenga en cuenta que la extensión Hash no
requiere que la biblioteca mhash esté disponible, tanto si la emulación
mhash está activada como si no.

10

También podría gustarte