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 clase DateTime
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 tipoIntlCalendar
oDateTime
que 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
.