Los enteros octales ahora pueden usar un prefijo explícito
0o
/0O
en literales enteros,
de manera similar a los literales enteros binarios y hexadecimales.
<?php
014; // Literal octal sin prefijo
0o14; // Literal octal prefixed
?>
Se ha añadido soporte para el desempaquetado de array con claves de cadena de caracteres.
<?php
$arr1 = [1, 'a' => 'b'];
$arr2 = [...$arr1, 'c' => 'd']; //[1, 'a' => 'b', 'c' => 'd']
?>
Ahora es posible especificar argumentos nombrados después de un desempaquetado de argumento. por ejemplo: foo(...$args, named: $arg).
Las subidas de archivos ahora proporcionan una clave full_path
adicional,
que contiene la ruta completa (en lugar de solo el nombre base) del archivo subido.
Esto está destinado a ser usado en conjunción con "upload webkitdirectory".
Se ha añadido soporte para enumeraciones.
Se ha añadido soporte para fibras.
Las cierres para callables ahora pueden ser creadas usando la sintaxis myFunc(...)
,
que es idéntica a Closure::fromCallable('myFunc')
.
Nota: El
...
es parte de la sintaxis, y no una omisión.
Se ha añadido soporte para intersección de tipos.
Los tipos de intersección no pueden ser usados con los tipos de unión
Se ha añadido un nuevo tipo de retorno never. Esto indica que una función o bien exit(), lanza una excepción, o no termina.
new
en los inicializadores
Ahora es posible usar expresiones new ClassName()
como
valor por defecto de un parámetro, una variable estática, inicializadores de constantes globales,
y como argumentos de atributo.
Los objetos también pueden ser pasados a define() ahora.
Se ha añadido soporte para solo lectura.
Se ha añadido soporte para el modificador final para constantes de clase. Además, las constantes de interfaz se vuelven sobrecargables por defecto.
Se ha añadido la opción CURLOPT_DOH_URL
.
Se han añadido opciones para certificados blob cuando libcurl >= 7.71.0:
CURLOPT_ISSUERCERT_BLOB
CURLOPT_PROXY_ISSUERCERT
CURLOPT_PROXY_ISSUERCERT_BLOB
CURLOPT_PROXY_SSLCERT_BLOB
CURLOPT_PROXY_SSLKEY_BLOB
CURLOPT_SSLCERT_BLOB
CURLOPT_SSLKEY_BLOB
Se ha añadido CURLStringFile, que puede ser usado para enviar un archivo desde una string en lugar de un archivo:
<?php
$file = new CURLStringFile($data, 'filename.txt', 'text/plain');
curl_setopt($curl, CURLOPT_POSTFIELDS, ['file' => $file]);
?>
Se ha añadido el formato de estado openmetrics. Puede ser usado por Prometheus para recuperar las métricas FPM.
Se ha añadido una nueva opción de pool para el gestor de procesos dinámico llamada
pm.max_spawn_rate
. Permite iniciar un número de hijos
a una tasa más rápida cuando el gestor de procesos dinámico está seleccionado.
El valor por defecto es 32
que era el valor anterior
codificado.
El soporte Avif ahora está disponible a través de imagecreatefromavif() y imageavif(), si libgd ha sido compilado con soporte Avif.
Las siguientes funciones hash(),
hash_file(), y hash_init()
ahora soportan un nuevo argumento opcional options
,
que puede ser usado para pasar datos específicos al algoritmo.
Se ha añadido soporte para MurmurHash3
con soporte de streaming.
Las siguientes variantes están implementadas:
El estado de hash inicial puede ser pasado vía la clave seed
en el array options
, por ejemplo:
<?php
$h = hash("murmur3f", $data, options: ["seed" => 42]);
echo $h, "\n";
?>
0
a la UINT_MAX
definida por la plataforma, generalmente
4294967295
.
Se ha añadido soporte para xxHash
.
Las siguientes variantes están implementadas:
El estado de hash inicial puede ser pasado vía la clave seed
en el array options
, por ejemplo:
<?php
$h = hash("xxh3", $data, options: ["seed" => 42]);
echo $h, "\n";
?>
secret
en el array options
, también:
<?php
$h = hash("xxh3", $data, options: ["secret" => "at least 136 bytes long secret here"]);
echo $h, "\n";
?>
mysqli.local_infile_directory
Se ha añadido la directiva INI mysqli.local_infile_directory, que puede ser usada para especificar un directorio desde el cual los archivos están permitidos ser cargados. Solo tiene sentido si mysqli.allow_local_infile no está activado, ya que todos los directorios están permitidos en ese caso.
Ahora es posible enlazar parámetros pasándolos como un array a mysqli_stmt::execute(). Todos los valores serán enlazados como cadenas de caracteres. Solo los arrays de lista están permitidos. Esta nueva funcionalidad no está disponible cuando MySQLi es compilado con libmysqlclient.
<?php
$stmt = $mysqli->prepare('INSERT INTO users(id, name) VALUES(?,?)');
$stmt->execute([1, $username]);
?>
mysqli_result::fetch_column()
ha sido añadido para permitir recuperar un solo valor escalar del conjunto de resultados.
El nuevo método acepta un parámetro de columna opcional column
basado en 0
de tipo int especificando qué columna recuperar.
<?php
$result = $mysqli->query('SELECT username FROM users WHERE id = 123');
echo $result->fetch_column();
?>
Se ha añadido el atributo PDO::MYSQL_ATTR_LOCAL_INFILE_DIRECTORY
,
que puede ser usado para especificar un directorio desde el cual los archivos
están permitidos ser cargados.
Solo tiene sentido si PDO::MYSQL_ATTR_LOCAL_INFILE
no está activado, ya que todos los directorios están permitidos en ese caso.
La sintaxis DSN "file:"
de SQLite ahora es soportada,
lo que permite especificar banderas adicionales.
Esta funcionalidad no está disponible si open_basedir está definido.
<?php
new PDO('sqlite:file:path/to/sqlite.db?mode=ro')
?>
Se ha añadido POSIX_RLIMIT_KQUEUES
y POSIX_RLIMIT_NPTS
.
Estos límites soft y hard solo están disponibles en FreeBSD.
fputcsv() ahora acepta un nuevo argumento
eol
que permite definir una secuencia de
fin de línea personalizada, el valor por defecto sigue siendo el mismo y es "\n"
.
SplFileObject::fputcsv() ahora acepta un nuevo argumento
eol
que permite definir una secuencia de
fin de línea personalizada, el valor por defecto sigue siendo el mismo y es "\n"
.