Nuevas funcionalidades

PHP Core

Propiedades con hooks

TODO

<?php
/*
ejemplos
*/

Visibilidad asimétrica de las propiedades

Las propiedades de objeto ahora pueden tener su visibilidad set controlada separadamente de la visibilidad get.

<?php
class Example
{
// El primer modificador de visibilidad controla la visibilidad de lectura,
// y el segundo modificador controla la visibilidad de escritura.
// La visibilidad de lectura no debe ser más restrictiva que la visibilidad de escritura.
public protected(set) string $name;

public function
__construct(string $name)
{
$this->name = $name;
}
}

Objetos perezosos

Ahora es posible crear objetos cuya inicialización se difiere hasta su acceso. Las bibliotecas y frameworks pueden aprovechar estos objetos perezosos para diferir la recuperación de datos o dependencias necesarias para la inicialización.

<?php
class Example
{
public function
__construct(private int $data)
{
}

// ...
}

$initializer = static function (Example $prototype): void {
// Recuperar datos o dependencias
$data = getData();
// Inicializar
$prototype->__construct($data);
};

$reflector = new ReflectionClass(Example::class);
$object = $reflector->newLazyInstance($initializer);

El atributo #[\Deprecated]

El nuevo atributo Deprecated puede ser utilizado para marcar funciones, métodos, y constantes de clase como obsoletos. El comportamiento de esta funcionalidad obsoleta utilizando este atributo corresponde al del mecanismo de obsolescencia ya existente para las funcionalidades proporcionadas por PHP mismo. La única excepción es que el código de error emitido es E_USER_DEPRECATED en lugar de E_DEPRECATED.

Las obsolescencias existentes en las funcionalidades proporcionadas por PHP mismo han sido actualizadas para utilizar este atributo, mejorando los mensajes de error emitidos incluyendo una breve explicación.

Interpretación de las cabeceras RFC1867 (multipart) en las solicitudes HTTP no-POST

Se ha añadido la función request_parse_body() que permite interpretar las cabeceras RFC1867 (multipart) en las solicitudes HTTP no-POST.

Encadenamiento de expresiones new sin paréntesis

Las nuevas expresiones con argumentos de constructor ahora son referenciables, lo que significa que pueden encadenar llamadas a métodos, accesos a propiedades, etc., sin encerrar la expresión entre paréntesis.

Información de depuración mejorada para WeakReference

La información de depuración para WeakReference ahora también mostrará el objeto al que se hace referencia, o null si la referencia ya no es válida.

Información de depuración mejorada para Closure

La salida de Closure::__debugInfo() ahora incluye el nombre, el archivo y la línea de la Closure.

Definición de símbolos idénticos en diferentes espacios de nombres

Salir de un espacio de nombres ahora desambigua los símbolos vistos. Esto permite utilizar un símbolo en un espacio de nombres, incluso si un espacio de nombres anterior ha declarado un símbolo con el mismo nombre.

cURL

curl_version() ahora devuelve un valor feature_list adicional, que es un array asociativo de todas las funcionalidades cURL conocidas, y si están soportadas (true) o no (false).

Se han añadido las constantes CURL_HTTP_VERSION_3 y CURL_HTTP_VERSION_3ONLY (disponibles desde libcurl 7.66 y 7.88) como opciones disponibles para CURLOPT_HTTP_VERSION.

Se ha añadido CURLOPT_PREREQFUNCTION como opción cURL que acepta un callable para llamar después de la conexión, pero antes del envío de la solicitud. Este callable debe devolver CURL_PREREQFUNC_OK o CURL_PREREQFUNC_ABORT para autorizar o anular la solicitud.

Se ha añadido CURLOPT_SERVER_RESPONSE_TIMEOUT, que anteriormente estaba disponible bajo el nombre CURLOPT_FTP_RESPONSE_TIMEOUT. Ambas constantes tienen el mismo valor.

Se ha añadido CURLOPT_DEBUGFUNCTION como opción cURL que acepta un callable que se llama durante el ciclo de vida de la solicitud con el objeto CurlHandle, un entero que contiene el tipo de mensaje de depuración, y una cadena que contiene el mensaje de depuración. El tipo de mensaje de depuración es uno de las siguientes constantes:

Una vez que esta opción está definida, CURLINFO_HEADER_OUT no debe definirse porque utiliza la misma funcionalidad de libcurl.

curl_getinfo() ahora devuelve una clave posttransfer_time_us, que contiene el número de microsegundos desde el inicio hasta que el último byte fue enviado. Cuando se sigue una redirección, el tiempo de cada solicitud se suma. Este valor también puede recuperarse pasando CURLINFO_POSTTRANSFER_TIME_T al parámetro option de curl_getinfo(). Esto requiere libcurl 8.10.0 o superior.

DOM

Se ha añadido el espacio de nombres Dom con nuevas clases en contraste con las clases DOM existentes (por ejemplo, Dom\Node es el nuevo DOMNode). Estas clases son compatibles con HTML 5 y cumplen con las especificaciones WHATWG, resolviendo así errores de larga data en la extensión DOM. Las clases DOM antiguas siguen estando disponibles para asegurar la compatibilidad hacia atrás.

Se ha añadido DOMNode::compareDocumentPosition() con sus constantes asociadas:

  • DOMNode::DOCUMENT_POSITION_DISCONNECTED
  • DOMNode::DOCUMENT_POSITION_PRECEDING
  • DOMNode::DOCUMENT_POSITION_FOLLOWING
  • DOMNode::DOCUMENT_POSITION_CONTAINS
  • DOMNode::DOCUMENT_POSITION_CONTAINED_BY
  • DOMNode::DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC

Ahora es posible pasar cualquier callable a DOMXPath::registerPhpFunctions(). Además, con DOMXPath::registerPhpFunctionNs(), los callbacks pueden registrarse para usar la sintaxis de llamada de función nativa en lugar de usar php:function('nombre').

Intl

Se ha añadido NumberFormatter::ROUND_HALFDOWN para complementar la funcionalidad existente de NumberFormatter::ROUND_HALFEVEN.

OpenSSL

Se ha añadido soporte para las curvas basadas en Curve25519 + Curve448. Específicamente, las claves x25519, ed25519, x448 y ed448 son soportadas en openssl_pkey_new(), openssl_pkey_get_details(), openssl_sign(), y openssl_verify() han sido extendidas para soportar estas claves.

Implementación de PASSWORD_ARGON2 hash de contraseña. Requiere OpenSSL 3.2 y una compilación NTS.

PCRE

La versión de pcre2lib incluida se ha actualizado a la versión 10.44. En consecuencia, ahora se reconoce {,3} como un cuantificador en lugar de un texto. Además, el significado de algunas clases de caracteres en modo UCP ha cambiado. Consulte el » registro de cambios de PCRE2 para obtener un registro de cambios completo.

PDO_DBLIB

Los atributos Pdo\Dblib::ATTR_STRINGIFY_UNIQUEIDENTIFIER y Pdo\Dblib::ATTR_DATETIME_CONVERT ahora actúan como atributos booleanos en lugar de atributos enteros. Por lo tanto, definir el atributo a través de PDO::setAttribute() y recuperarlo a través de PDO::getAttribute() espera y devuelve un bool.

PDO_FIREBIRD

El atributo PDO::ATTR_AUTOCOMMIT ahora actúa como un atributo booleano en lugar de un atributo entero. Por lo tanto, definir el atributo a través de PDO::setAttribute() y recuperarlo a través de PDO::getAttribute() espera y devuelve un bool.

La extensión ahora expone ciertas API C++ de Firebird, por lo que la compilación de esta extensión ahora requiere un compilador C++. Además, la extensión ahora debe compilarse contra fbclient 3.0 o superior.

PDO_MYSQL

Los atributos PDO::ATTR_AUTOCOMMIT PDO::ATTR_EMULATE_PREPARES, y PDO::MYSQL_ATTR_DIRECT_QUERY ahora actúan como atributos booleanos en lugar de atributos enteros. Por lo tanto, definir el atributo a través de PDO::setAttribute() y recuperarlo a través de PDO::getAttribute() espera y devuelve un bool.

PDO_PGSQL

La información de conexión DSN, cuando se define, ahora tiene prioridad sobre los argumentos del constructor PDO, estando más cerca de lo que indica la documentación.

Phar

Se ha añadido soporte para la extensión de marca de tiempo Unix para los archivos Zip.

Readline

Se ha añadido la posibilidad de cambiar el nombre del archivo de historial de .php_history a través de la variable de entorno PHP_HISTFILE.

Reflection

ReflectionAttribute ahora contiene una propiedad name para almacenar el nombre del atributo.

ReflectionClassConstant::__toString() y ReflectionProperty::__toString() ahora devuelven los comentarios de documentación adjuntos.

Se han añadido varios nuevos métodos y constantes relacionados con la funcionalidad de los objetos perezosos:

SOAP

Se ha añadido soporte para la notación clark para los espacios de nombres en la clase. Ahora es posible especificar dependencias en una clase con la notación clark para resolver un tipo con un espacio de nombres específico a una clase específica. Por ejemplo: '{http://example.com}foo' => 'FooClass'.

Las instancias de DateTimeInterface que se pasan a xsd:datetime o elementos similares ahora se serializan como elementos en lugar de como cadenas vacías.

La persistencia de sesiones ahora funciona con un módulo de sesión separado.

Standard

Se ha añadido una nueva enumeración RoundingMode con un nombre más claro y una mejor descubribilidad en comparación con las constantes PHP_ROUND_*. Además, se han añadido cuatro nuevos modos de redondeo que solo están disponibles a través de la nueva enumeración RoundingMode.

XSL

Ahora es posible utilizar parámetros que contienen tanto comillas simples como dobles.

Ahora es posible pasar cualquier callable a XSLTProcessor::registerPhpFunctions().

Se han añadido XSLTProcessor::$maxTemplateDepth y XSLTProcessor::$maxTemplateVars para controlar la profundidad de recursión de la evaluación del template XSL.

Zip

Se ha añadido la constante ZipArchive::ER_TRUNCATED_ZIP, que ha sido añadida en libzip 1.11.

add a note

User Contributed Notes

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