Nuevas características
En esta página
- Nuevas características#
- Nuevo tipo de objeto#
- Carga de extensiones por nombre#
- Sobrescribir métodos abstractos#
- Sodium ahora es una extensión del núcleo#
- Hash de contraseñas con Argon2#
- Tipos de cadena extendidos para PDO#
- Información adicional de depuración para preparaciones emuladas en PDO#
- Soporte para operaciones extendidas en LDAP#
- Adiciones de Información de Dirección a la extensión Sockets#
- Ampliación del tipo de parámetro#
- Permitir una coma final para namespaces agrupados#
- Soporte de proc_nice en Windows#
- Soporte de endian en pack y unpack#
- Mejoras en la extensión EXIF#
- Nuevas características en PCRE#
- SQLite3 permite escribir BLOBs#
- Devoluciones de llamada de Oracle OCI8 para Falla Transparente de Aplicaciones#
- Mejoras en la extensión ZIP#
Nuevas características#
Nuevo tipo de objeto#
Se ha introducido un nuevo tipo, object, que puede ser usado para el tipado de parámetros (contravariante) y el tipado de retorno (covariante) de cualquier objeto.
<?php
function test(object $obj) : object
{
return new SplQueue();
}
test(new stdClass());
Carga de extensiones por nombre#
Las extensiones compartidas ya no requieren que se especifique su extensión de archivo (.so para Unix o .dll para Windows) para ser cargadas. Esto está habilitado en el archivo php.ini, así como en la función dl.
Sobrescribir métodos abstractos#
Ahora los métodos abstractos pueden ser sobrescritos cuando una clase abstracta extiende otra clase abstracta.
<?php
abstract class A
{
abstract function test(string $s);
}
abstract class B extends A
{
// sobrescrito - aún manteniendo la contravarianza para los parámetros y la covarianza para el retorno
abstract function test($s) : int;
}
Sodium ahora es una extensión del núcleo#
La biblioteca moderna de criptografía Sodium se ha convertido en una extensión del núcleo en PHP.
Para una referencia completa de funciones, consulte el capítulo Sodium.
Hash de contraseñas con Argon2#
Argon2 se ha añadido a la API de hash de contraseñas, donde se han expuesto las siguientes constantes:
-
PASSWORD_ARGON2I -
PASSWORD_ARGON2_DEFAULT_MEMORY_COST -
PASSWORD_ARGON2_DEFAULT_TIME_COST -
PASSWORD_ARGON2_DEFAULT_THREADS
Tipos de cadena extendidos para PDO#
El tipo de cadena de PDO se ha extendido para soportar el tipo de carácter nacional cuando se emulan preparaciones. Esto se ha hecho con las siguientes constantes:
-
PDO::PARAM_STR_NATL -
PDO::PARAM_STR_CHAR -
PDO::ATTR_DEFAULT_STR_PARAM
Estas constantes se utilizan mediante la combinación bit a bit OR con PDO::PARAM_STR:
<?php
$db->quote('über', PDO::PARAM_STR | PDO::PARAM_STR_NATL);
Información adicional de depuración para preparaciones emuladas en PDO#
El método PDOStatement::debugDumpParams ha sido actualizado para incluir el SQL que se envía a la base de datos, donde se mostrará la consulta completa y sin procesar (incluyendo los marcadores de posición reemplazados con sus valores vinculados). Esto se ha añadido para ayudar en la depuración de preparaciones emuladas (y por lo tanto solo estará disponible cuando las preparaciones emuladas estén activadas).
Soporte para operaciones extendidas en LDAP#
Se ha añadido soporte para EXOP a la extensión LDAP. Esto se ha hecho exponiendo las siguientes funciones y constantes:
-
ldap_parse_exop -
ldap_exop -
ldap_exop_passwd -
ldap_exop_whoami -
LDAP_EXOP_START_TLS -
LDAP_EXOP_MODIFY_PASSWD -
LDAP_EXOP_REFRESH -
LDAP_EXOP_WHO_AM_I -
LDAP_EXOP_TURN
Adiciones de Información de Dirección a la extensión Sockets#
La extensión de sockets ahora tiene la capacidad de buscar información de direcciones, así como conectarse a ella, enlazarse a ella y explicarla. Se han añadido las siguientes cuatro funciones para esto:
-
socket_addrinfo_lookup -
socket_addrinfo_connect -
socket_addrinfo_bind -
socket_addrinfo_explain
Ampliación del tipo de parámetro#
Los tipos de parámetros de métodos sobrescritos y de implementaciones de interfaces ahora pueden ser omitidos. Esto sigue siendo conforme con LSP, ya que los tipos de parámetros son contravariantes.
<?php
interface A
{
public function Test(array $input);
}
class B implements A
{
public function Test($input){} // tipo omitido para $input
}
Permitir una coma final para namespaces agrupados#
Ahora se puede añadir una coma final a la sintaxis de uso agrupado introducida en PHP 7.0.
<?php
use Foo\Bar\{
Foo,
Bar,
Baz,
};
Soporte de proc_nice en Windows#
La función proc_nice ahora es soportada en Windows.
Soporte de endian en pack y unpack#
Las funciones pack y unpack ahora soportan float y double tanto en little endian como en big endian.
Mejoras en la extensión EXIF#
La extensión EXIF se ha actualizado para soportar una gama mucho más amplia de formatos. Esto significa que sus etiquetas específicas de formato ahora se traducen correctamente al analizar imágenes con la función exif_read_data. Los siguientes nuevos formatos ahora son soportados:
-
Samsung
-
DJI
-
Panasonic
-
Sony
-
Pentax
-
Minolta
-
Sigma/Foveon
-
AGFA
-
Kyocera
-
Ricoh
-
Epson
Las funciones EXIF exif_read_data y exif_thumbnail ahora soportan pasar flujos como su primer argumento.
Nuevas características en PCRE#
- Se ha añadido el modificador
Jpara establecer PCRE_DUPNAMES.
SQLite3 permite escribir BLOBs#
SQLite3::openBlob ahora permite abrir campos BLOB en modo de escritura; anteriormente solo se soportaba el modo de lectura.
Devoluciones de llamada de Oracle OCI8 para Falla Transparente de Aplicaciones#
Se ha añadido soporte para devoluciones de llamada de Falla Transparente de Aplicaciones (TAF) de Oracle Database. TAF permite que las aplicaciones PHP OCI8 se reconecten automáticamente a una base de datos preconfigurada cuando una conexión se rompe. El nuevo soporte de devoluciones de llamada de TAF permite que las aplicaciones PHP supervisen y controlen la reconexión durante la falla.
Mejoras en la extensión ZIP#
Se ha añadido soporte de lectura y escritura para archivos cifrados (requiere libzip 1.2.0).
La clase ZipArchive ahora implementa la interfaz Countable.
El flujo zip:// ahora acepta una opción de contexto 'password'.