El tipo iterable ahora es un alias integrado en la compilación para el tipo
array|Traversable.
Los mensajes de error relativos a iterable
usarán por lo tanto array|Traversable
.
La reflexión sobre el tipo se preserva para los simples iterable
(y ?iterable
) para producir una clase
ReflectionNamedType con el nombre iterable
,
sin embargo, el uso de iterable
en los tipos de unión se convertirá en
array|Traversable
.
El formato de fecha de las cookies enviadas ahora es 'D, d M Y H:i:s \G\M\T'
;
anteriormente, era 'D, d-M-Y H:i:s T'
.
Las funciones strcmp(), strcasecmp(),
strncmp(), strncasecmp() y
substr_compare(), utilizando la comparación de cadenas binarias seguras, ya no garantizan devolver
strlen($string1) - strlen($string2)
cuando las longitudes de las cadenas no son
iguales, pero ahora pueden devolver -1
o 1
en su lugar. En lugar de depender de un valor concreto, el valor de retorno debe
compararse con 0
.
dba_open() y dba_popen() ahora tienen la firma reforzada siguiente:
$path
,$mode
,$handler
= null
,$permission
= 0644,$map_size
= 0,$flags
= null
El argumento opcional skip de dba_fetch() ahora está al final de acuerdo con la semántica de PHP. Su firma es ahora:
La firma sobrecargada: sigue siendo aceptada, pero se recomienda usar la nueva variante estándar.random_bytes() y random_int() ahora lanzan \Random\RandomException en caso de fallo del CSPRNG. Anteriormente, se lanzaba una simple \Exception en su lugar.
El parámetro iterator
de
iterator_to_array() y iterator_count()
se ha extendido a iterable en lugar de Iterator,
lo que permite pasar arrays.
Las propiedades de DatePeriod ahora están correctamente declaradas.
Las instancias de IntlBreakIterator, IntlRuleBasedBreakIterator, IntlCodePointBreakIterator, IntlPartsIterator, IntlCalendar, Collator, IntlIterator, UConverter, IntlDateFormatter, IntlDatePatternGenerator, MessageFormatter, ResourceBundle, Spoofchecker, IntlTimeZone, y Transliterator ya no son serializables. Anteriormente, podían ser serializadas, pero la deserialización producía objetos inutilizables o fallaba.
Se ha eliminado el soporte de libmysql y ya no es posible compilar mysqli con libmysql. A partir de ahora, la extensión mysqli solo puede ser compilada con mysqlnd. Todas las funcionalidades de libmysql no disponibles en mysqlnd han sido eliminadas:
MYSQLI_IS_MARIADB
está obsoletaLa versión mínima requerida de la biblioteca Oracle Client ahora es 11.2.
Los caracteres NUL (\0
) en las cadenas de patrones ahora son soportados.
Intentar modificar el session.cookie_samesite mientras la sesión está activa o después de que la salida haya sido enviada ahora fallará y emitirá una advertencia. El comportamiento ahora está alineado para todos los otros parámetros INI de sesión.
sqlite3.defensive
ahora es INI_USER
.
getimagesize() ahora informa las dimensiones reales de la imagen, bits y canales de las imágenes AVIF. Anteriormente, las dimensiones se informaban como 0x0, y los bits y canales no se informaban en absoluto.
Las propiedades de la clase tidy ahora están correctamente declaradas. Y las de la clase tidyNode ahora están correctamente declaradas como de solo lectura.
La extensión Zip se ha actualizado a la versión 1.20.0, que añade los siguientes métodos:
Se ha añadido soporte para prefijos binarios (0b
/0B
) y octales
(0o
/0O
) a los parámetros INI para números enteros.
Los parámetros INI enteros que comienzan con un cero (0
)
siguen interpretándose como números enteros octales.
El análisis de ciertos valores mal formados ahora desencadena una advertencia, mientras que antes se ignoraba silenciosamente. Por razones de compatibilidad ascendente, la interpretación de estos valores no ha cambiado. Esto afecta a los siguientes parámetros: