Nuevas Funcionalidades

Núcleo de PHP

Prefijo literal octal entero

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
?>

Desempaquetado de array con claves de cadena de caracteres

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']
?>

Argumento nombrado después de un desempaquetado de argumento

Ahora es posible especificar argumentos nombrados después de un desempaquetado de argumento. por ejemplo: foo(...$args, named: $arg).

Clave de ruta completa para subidas de archivos

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

Enumeraciones

Se ha añadido soporte para enumeraciones.

Fibras

Se ha añadido soporte para fibras.

Sintaxis de callable de primera clase

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.

Intersección de tipos

Se ha añadido soporte para intersección de tipos.

Precaución

Los tipos de intersección no pueden ser usados con los tipos de unión

El tipo never

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.

Propiedades de solo lectura

Se ha añadido soporte para solo lectura.

Constantes de clase finales

Se ha añadido soporte para el modificador final para constantes de clase. Además, las constantes de interfaz se vuelven sobrecargables por defecto.

CURL

Se ha añadido la opción CURLOPT_DOH_URL.

Se han añadido opciones para certificados blob cuando libcurl >= 7.71.0:

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]);
?>

FPM

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.

GD

El soporte Avif ahora está disponible a través de imagecreatefromavif() y imageavif(), si libgd ha sido compilado con soporte Avif.

Hash

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.

MurmurHash3

Se ha añadido soporte para MurmurHash3 con soporte de streaming. Las siguientes variantes están implementadas:

  • murmur3a, hash de 32-bit
  • murmur3c, hash de 128-bit para x86
  • murmur3f, hash de 128-bit para x64

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";
?>
Un valor de semilla válido está en el rango de 0 a la UINT_MAX definida por la plataforma, generalmente 4294967295.

xxHash

Se ha añadido soporte para xxHash. Las siguientes variantes están implementadas:

  • xxh32, hash de 32-bit
  • xxh64, hash de 64-bit
  • xxh3, hash de 64-bit
  • xxh128, hash de 128-bit

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";
?>
El uso secreto es soportado pasando la clave secret en el array options, también:
<?php
$h
= hash("xxh3", $data, options: ["secret" => "at least 136 bytes long secret here"]);
echo
$h, "\n";
?>
La calidad del secreto personalizado es crucial para la calidad del hash resultante. Se recomienda encarecidamente usar la mejor entropía posible.

MySQLi

Nueva directiva INImysqli.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.

Enlazar parámetros en execute

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]);
?>

Nuevo método mysqli_result::fetch_column()

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();
?>

PDO

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.

PDO_SQLite

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')
?>

POSIX

Se ha añadido POSIX_RLIMIT_KQUEUES y POSIX_RLIMIT_NPTS. Estos límites soft y hard solo están disponibles en FreeBSD.

Estándar

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

SPL

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

add a note

User Contributed Notes

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