Nuevas características
En esta página
- Nuevas características#
- Núcleo de PHP#
- Argumentos nombrados#
- Atributos#
- Promoción de propiedades en el constructor#
- Tipos de unión#
- Expresión match#
- Operador nullsafe#
- Otras nuevas características#
- Fecha y hora#
- DOM#
- Filtro#
- Enchant#
- FPM#
- Hash#
- Funciones de internacionalización#
- LDAP#
- OPcache#
- OpenSSL#
- Expresiones regulares (compatibles con Perl)#
- Reflexión#
- SQLite3#
- Biblioteca estándar#
- Tokenizer#
- Zip#
Nuevas características#
Núcleo de PHP#
Argumentos nombrados#
Se ha añadido soporte para losArgumentos nombrados.
Atributos#
Se ha añadido soporte para los Atributos.
Promoción de propiedades en el constructor#
Se ha añadido soporte para la promoción de propiedades en el constructor (declarar propiedades en la firma del constructor).
Tipos de unión#
Se ha añadido soporte para los tipos de unión.
Expresión match#
Se ha añadido soporte para las expresiones match.
Operador nullsafe#
Se ha añadido soporte para el operador nullsafe (?->).
Otras nuevas características#
-
Se ha añadido la clase WeakMap.
-
Se ha añadido la clase
ValueError. -
Cualquier número de parámetros de función ahora puede ser reemplazado por un argumento variádico, siempre que los tipos sean compatibles. Por ejemplo, el siguiente código ahora está permitido:
```php
```
static(como en "enlace estático en tiempo de ejecución") ahora puede ser usado como tipo de retorno:
```php
```
-
Ahora es posible obtener el nombre de la clase de un objeto usando
$object::class. El resultado es el mismo queget_class($object). -
neweinstanceofahora pueden ser usados con expresiones arbitrarias, usandonew (expression)(...$args)y$obj instanceof (expression). -
Se han aplicado algunas correcciones de consistencia en la sintaxis de variables, por ejemplo, escribir
Foo::BAR::$bazahora está permitido. -
Se ha añadido la interfaz Stringable, que se implementa automáticamente si una clase define un método __toString().
-
Los traits ahora pueden definir métodos privados abstractos. Dichos métodos deben ser implementados por la clase que usa el trait.
-
throwahora puede ser usado como una expresión. Esto permite usos como:
```php throw new Exception('Exception in arrow function'); $user = $session->user ?? throw new Exception('Must have user'); ``` - Ahora se permite una coma final opcional en las listas de parámetros. ```php
```
-
Se ha añadido
get_resource_id, que devuelve el mismo valor que(int) $resource. Proporciona la misma funcionalidad con una API más clara. -
Se ha añadido
InternalIterator.
Fecha y hora#
-
Se han añadido DateTime::createFromInterface y DateTimeImmutable::createFromInterface.
-
Se ha añadido el especificador de formato DateTime
p, que es igual quePpero devuelveZen lugar de+00:00para UTC.
DOM#
Se han añadido DOMParentNode y DOMChildNode con nuevas API de recorrido y manipulación.
Filtro#
Se ha añadido FILTER_VALIDATE_BOOL como alias de FILTER_VALIDATE_BOOLEAN. Se prefiere el nuevo nombre, ya que utiliza el nombre de tipo canónico.
Enchant#
Se han añadido enchant_dict_add, enchant_dict_is_added y LIBENCHANT_VERSION.
FPM#
Se ha añadido una nueva opción pm.status_listen que permite obtener el estado desde un endpoint diferente (por ejemplo, un puerto o archivo UDS), lo cual es útil para obtener el estado cuando todos los procesos hijos están ocupados sirviendo peticiones de larga duración.
Hash#
Los objetos HashContext ahora pueden ser serializados.
Funciones de internacionalización#
Se han añadido las constantes IntlDateFormatter::RELATIVE_FULL, IntlDateFormatter::RELATIVE_LONG, IntlDateFormatter::RELATIVE_MEDIUM y IntlDateFormatter::RELATIVE_SHORT.
LDAP#
Se ha añadido ldap_count_references, que devuelve el número de mensajes de referencia en un resultado de búsqueda.
OPcache#
Si la directiva ini opcache.record_warnings está habilitada, OPcache registrará las advertencias en tiempo de compilación y las reproducirá en el siguiente include, incluso si se sirve desde la caché.
OpenSSL#
Se ha añadido soporte para Cryptographic Message Syntax (CMS) (RFC 5652) compuesto por funciones para cifrado, descifrado, firma, verificación y lectura. La API es similar a la API de las funciones PKCS #7 con la adición de nuevas constantes de codificación: OPENSSL_ENCODING_DER, OPENSSL_ENCODING_SMIME y OPENSSL_ENCODING_PEM: openssl_cms_encrypt cifra el mensaje en el archivo con los certificados y envía el resultado al archivo proporcionado., openssl_cms_decrypt descifra el mensaje S/MIME en el archivo y envía los resultados al archivo proporcionado., openssl_cms_read exporta el archivo CMS a un array de certificados PEM., openssl_cms_sign firma el mensaje MIME en el archivo con un certificado y una clave y envía el resultado al archivo proporcionado., openssl_cms_verify verifica que el bloque de datos está intacto, que el firmante es quien dice ser, y devuelve los certificados de los firmantes.
Expresiones regulares (compatibles con Perl)#
Se ha añadido preg_last_error_msg, que devuelve un mensaje legible para el último error PCRE. Complementa a preg_last_error, que devuelve un valor entero de enumeración en su lugar.
Reflexión#
- Los siguientes métodos ahora pueden devolver información sobre los valores predeterminados de los parámetros de las funciones internas:
ReflectionParameter::isDefaultValueAvailable, ReflectionParameter::getDefaultValue, ReflectionParameter::isDefaultValueConstant, ReflectionParameter::getDefaultValueConstantName
SQLite3#
Se han añadido SQLite3::setAuthorizer y las constantes de clase correspondientes para establecer una función de retorno de llamada de usuario que se utilizará para autorizar o no una acción en la base de datos.
Biblioteca estándar#
-
Se han añadido
str_contains,str_starts_withystr_ends_with, que comprueban sihaystackcontiene, comienza con o termina conneedle, respectivamente. -
Se ha añadido
fdiv, que realiza una división de punto flotante según la semántica IEEE 754. La división por cero se considera bien definida y devolverá uno deInf,-InfoNaN. -
Se ha añadido
get_debug_type, que devuelve un tipo útil para mensajes de error. A diferencia degettype, utiliza nombres de tipo canónicos, devuelve nombres de clase para objetos e indica el tipo de recurso para los recursos. -
printfy funciones similares ahora soportan los especificadores de formato%hy%H. Son iguales que%gy%G, pero siempre usan"."como separador decimal, en lugar de determinarlo a través de la configuración regionalLC_NUMERIC. -
printfy funciones similares ahora soportan el uso de"*"como ancho o precisión, en cuyo caso el ancho/precisión se pasa como argumento a printf. Esto también permite usar precisión-1con%g,%G,%hy%H. Por ejemplo, el siguiente código puede usarse para reproducir el formato predeterminado de punto flotante de PHP:
```php
```
proc_openahora soporta descriptores de pseudo-terminal (PTY). Lo siguiente conectastdin,stdoutystderral mismo PTY:
```php
```
proc_openahora soporta descriptores de pares de sockets. Lo siguiente conecta un par de sockets distinto astdin,stdoutystderr:
```php
```
A diferencia de las tuberías, los sockets no sufren problemas de E/S bloqueante en Windows. Sin embargo, no todos los programas pueden funcionar correctamente con sockets stdio.
-
Las funciones de ordenamiento ahora son estables, lo que significa que los elementos que se comparan como iguales conservarán su orden original.
-
array_diff,array_intersecty sus variaciones ahora pueden ser usadas con un solo array como argumento. Esto significa que usos como los siguientes ahora son posibles:
```php
```
- El parámetro
flagdeob_implicit_flushfue cambiado para aceptar unboolen lugar de unint.
Tokenizer#
PhpToken añade una interfaz basada en objetos al tokenizer. Proporciona una representación más uniforme y ergonómica, siendo al mismo tiempo más eficiente en memoria y más rápida.
Zip#
-
La extensión Zip ha sido actualizada a la versión 1.19.1.
-
Nuevos ZipArchive::setMtimeName y ZipArchive::setMtimeIndex para establecer la hora de modificación de una entrada.
-
Nuevo ZipArchive::registerProgressCallback para proporcionar actualizaciones durante el cierre del archivo.
-
Nuevo ZipArchive::registerCancelCallback para permitir la cancelación durante el cierre del archivo.
-
Nuevo ZipArchive::replaceFile para reemplazar el contenido de una entrada.
-
Nuevo ZipArchive::isCompressionMethodSupported para verificar las características opcionales de compresión.
-
Nuevo ZipArchive::isEncryptionMethodSupported para verificar las características opcionales de cifrado.
-
Se ha añadido la propiedad
ZipArchive::lastIdpara obtener el valor del índice de la última entrada añadida. -
Ahora se pueden verificar los errores después de que un archivo ha sido cerrado usando las propiedades
ZipArchive::statusyZipArchive::statusSys, o el método ZipArchive::getStatusString. -
La opción
'remove_path'de ZipArchive::addGlob y ZipArchive::addPattern ahora se trata como un prefijo de cadena arbitrario (para mantener la consistencia con la opción'add_path'), mientras que anteriormente se trataba como un nombre de directorio. -
Las características opcionales de compresión / cifrado ahora se listan en phpinfo.