Otros cambios

Cambios en el núcleo

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'.

Cambios en los módulos SAPI

CLI

Los flujos STDOUT, STDERR y STDIN ya no se cierran al destruir los recursos, lo que generalmente ocurre cuando el CLI termina. Sin embargo, aún es posible cerrar explícitamente estos flujos usando fclose() y similares.

Funciones modificadas

Núcleo

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

dba_open() y dba_popen() ahora tienen la firma reforzada siguiente:

dba_open(
    string $path,
    string $mode,
    ?string $handler = null,
    int $permission = 0644,
    int $map_size = 0,
    ?int $flags = null
): resource|false

El argumento opcional skip de dba_fetch() ahora está al final de acuerdo con la semántica de PHP. Su firma es ahora:

dba_fetch(string|array $key, resource $handle, int $skip): string|false
La firma sobrecargada:
dba_fetch(string|array $key, int $skip, resource $handle): string|false
sigue siendo aceptada, pero se recomienda usar la nueva variante estándar.

Random

random_bytes() y random_int() ahora lanzan \Random\RandomException en caso de fallo del CSPRNG. Anteriormente, se lanzaba una simple \Exception en su lugar.

SPL

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.

Otros cambios en las extensiones

Date

Las propiedades de DatePeriod ahora están correctamente declaradas.

Intl

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.

MySQLi

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:

OCI8

La versión mínima requerida de la biblioteca Oracle Client ahora es 11.2.

PCRE

Los caracteres NUL (\0) en las cadenas de patrones ahora son soportados.

Session

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

sqlite3.defensive ahora es INI_USER.

Standard

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.

Tidy

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.

Zip

La extensión Zip se ha actualizado a la versión 1.20.0, que añade los siguientes métodos:

Cambios en la gestión de los archivos INI

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:

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top