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());
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().
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;
}
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.
Argon2 se ha añadido a la API de hash de contraseñas, donde se han expuesto las siguientes constantes:
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:
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);
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).
Se ha añadido soporte para EXOP a la extensión LDAP. Esto se ha hecho exponiendo las siguientes funciones y constantes:
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:
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
}
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,
};
La función proc_nice() ahora es soportada en Windows.
Las funciones pack() y unpack() ahora soportan float y double tanto en little endian como en big endian.
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:
Las funciones EXIF exif_read_data() y exif_thumbnail() ahora soportan pasar flujos como su primer argumento.
J
para establecer PCRE_DUPNAMES.
SQLite3::openBlob() ahora permite abrir campos BLOB en modo de escritura; anteriormente solo se soportaba el modo de lectura.
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.
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'
.