Las nuevas clases, métodos e interfaces de PHP 5.5
Nuevas clases e interfaces
La extensión
cURL ha añadido la clase CURLFile para simplificar el tratamiento de los archivos subidos mediante peticiones POST de HTTP:$curl = curl_init('http://librosweb.es/subir_archivo.php'); $archivoCurl = curl_file_create('foto.jpg'); // ...
En el ejemplo anterior, la variable
$archivoCurl es de tipo CURLFile, por lo que puedes obtener o modificar su información a través de los métodos de esa clase;$archivoCurl = curl_file_create('foto.jpg'); // obtener información básica sobre el archivo $nombreArchivo = $archivoCurl->getFilename(); $tipoMime = $archivoCurl->getMimeType(); // cambiar el nombre del archivo que se subirá $archivoCurl->setPostFilename('nuevo_nombre_archivo.jpg');
La extensión
Intl ha añadido varias nuevas clases, siendo las más importantes IntlCalendar,IntlGregorianCalendar y IntlTimeZone.
La extensión
Date/Time ha añadido la clase DateTimeImmutable. Esta clase es idéntica a la claseDateTime salvo que su valor nunca se modifica. Al ejecutar por ejemplo el método modify() sobre un objeto de esa clase, se devuelve un nuevo objeto con la nueva fecha/hora.
Hasta ahora, cuando modificabas una fecha con el método
modify() se podían producir efectos inesperados si no tenías cuidado:$presente = new DateTime(); $futuro = $presente->modify('+1 day'); // $presente === $futuro
Para evitar el problema anterior, debías clonar la fecha original y modificar después la fecha clonada:
$presente = new DateTime(); $futuro = clone $presente; $futuro = $futuro->modify('+1 day'); // $presente !== $futuro
Gracias a la nueva clase
DateTimeImmutable, ya no es necesario clonar la clase antes de modificarla:$presente = new DateTimeImmutable(); $futuro = $presente->modify('+1 day'); // $presente !== $futuro
Esta extensión también ha añadido la interfaz DateTimeInterface con los siguientes métodos:
interface DateTimeInterface { public string format(string $format); public int getOffset(); public int getTimestamp(); public DateTimeZone getTimezone(); public DateInterval diff(DateTimeInterface $datetime2, bool $absolute = false); public __wakeup(); }
Nuevos métodos
La extensión
MySQLi ha añadido tres nuevos métodos:mysqli::begin_transaction(), indica que debe empezar una transacción.mysqli::release_savepoint(), deshace los cambios de una transacción y vuelve hasta el punto de guardado que se indica.mysqli::savepoint(), crea un nuevo punto de guardado dentro de una transacción.
La extensión
intl ha añadido los siguientes cuatro nuevos métodos para la clase IntlDateFormatter:IntlDateFormatter::formatObject(), formatea el objeto de tipoIntlCalendaroDateTimeque se le pasa aplicando el formato indicado.IntlDateFormatter::getCalendarObject(), devuelve una copia del calendario interno que está utilizando este formateador de fechas. Además del calendario gregoriano utilizado en la mayoría de países, el calendario devuelto puede ser de tipo japonés, budista, islámico, etc.IntlDateFormatter::getTimeZone(), devuelve la zona horaria utilizada por el objeto formateador de fechas.IntlDateFormatter::setTimeZone(), establece la zona horaria utilizada por el objeto formateador de fechas.
Otros cambios relacionados con las clases
A partir de PHP 5.5, las palabras clave
self, parent y static utilizadas en las clases ya no distinguen las mayúsculas, por lo que self::MI_CONSTANTE es equivalente a SELF::MI_CONSTANTE.




