Modificaciones que causan incompatibilidad ascendente

Aunque la mayoría del código PHP 5 existente debería funcionar sin ninguna modificación, debe tener en cuenta algunas incompatibilidades ascendentes:

Las claves de los arreglos no se sobrescriben al definir un arreglo como una propiedad de una clase a través de un literal de arreglo

Anteriormente, los arreglos declarados como propiedades de clase que mezclaban claves explícitas e implícitas podían ver sus elementos sobrescritos sin advertencia si una clave explícita era idéntica a una clave secuencial implícita. Por ejemplo:

<?php
class C {
const
ONE = 1;
public
$array = [
self::ONE => 'foo',
'bar',
'quux',
];
}

var_dump((new C)->array);
?>

Salida del ejemplo anterior en PHP 5.5:

array(2) {
  [0]=>
  string(3) "bar"
  [1]=>
  string(4) "quux"
}

Salida del ejemplo anterior en PHP 5.6:

array(3) {
  [1]=>
  string(3) "foo"
  [2]=>
  string(3) "bar"
  [3]=>
  string(4) "quux"
}

Rigurosidad de json_decode()

json_decode() ahora rechaza las variantes no escritas en minúscula de los literales JSON true, false y null, de acuerdo con la especificación JSON, y json_last_error() se informa en consecuencia. Anteriormente, los valores pasados a json_decode() que contenían alguno de estos valores en mayúsculas o en una combinación de mayúsculas y minúsculas eran aceptados.

Este cambio solo afectará a los casos en los que se pase JSON inválido a json_decode(): el JSON válido no se verá afectado y se analizará normalmente.

Los manejadores de flujo ahora verifican por defecto los certificados de par y los nombres de host al usar SSL/TLS

Todos los flujos encriptados de clientes ahora habilitan la verificación del par por omisión. De manera predeterminada se usará el paquete de CA predeterminado de OpenSSL para verificar el certificado del par. En la mayoría de los casos no será necesario realizar ningún cambio para comunicarse con servidores que posean certificados SSL válidos, ya que los distribuidores generalmente configuran OpenSSL para que emplee paquetes de CA bien conocidos.

El paquete de CA podría ser sobrescrito globalmente estableciendo la opción de configuración openssl.cafile u openssl.capath, o en función de cada petición, usando las opciones de contexto cafile o capath.

Aunque no se recomienda en general, es posible deshabilitar la verificación del certificado del par para una petición estableciendo la opción de contexto verify_peer a false, y para deshabilitar la validación del nombre del par estableciendo a false la opción de contexto verify_peer_name.

Los recursos GMP ahora son objetos

Los recursos GMP ahora son objetos. La API de la extensión GMP no ha cambiado y el código existente debería continuar funcionando sin modificación a menos que se realice una verificación explícita usando is_resource() o equivalente.

Las funciones Mcrypt ahora requieren claves o IV válidos

mcrypt_encrypt(), mcrypt_decrypt(), mcrypt_cbc(), mcrypt_cfb(), mcrypt_ecb(), mcrypt_generic() y mcrypt_ofb() ya no aceptan claves o vectores de inicialización (IVs) de tamaños incorrectos, y los modos de cifrado por bloques que requieren IVs fallarán ahora si no se proporciona un IV.

Descarga de archivos con cURL

La descarga de archivos usando la sintaxis @file ahora requiere que la directiva CURLOPT_SAFE_UPLOAD esté definida como false. CURLFile debe ser usado en su lugar.

add a note

User Contributed Notes

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