Aunque la mayoría del código existente de PHP 5 debería funcionar sin cambios, se ha de tomar nota de algunos cambios retroincompatibles:
Anteriormente, los array declarados como propiedades de clase que mezclaban claves explícita e implícitamente podían tener elementos de array sobrescritos de manera silenciosa si una clave explícita era la misma que una clave implícita secuencial. Por ejemplo:
<?php
class C {
const UNO = 1;
public $array = [
self::UNO => '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" }
json_decode() ahora siempre rechaza las variantes que no estén en minúsculas de los literales true, false y null de JSON, según la especificación de JSON, y establece json_last_error() en consecuencia. Anteriormente, json_decode() aceptaba entradas que consistían únicamente en uno de estos valores en mayúsculas o mezclando también minúsculas.
Este cambio solamente afectará a los casos donde hubiera sido pasado JSON no válido a json_decode(): una entrada JSON válida no se verá afectada y continuará siendo interpretada normalmente.
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. La API funcional implementada en la extensión GMP no ha cambiado, por lo que el código debería ejecutarse sin modificaciones, a menos que se revise en busca de un recurso explícitamente empleando is_resource() o similar.
mcrypt_encrypt(), mcrypt_decrypt(), mcrypt_cbc(), mcrypt_cfb(), mcrypt_ecb(), mcrypt_generic() y mcrypt_ofb() ya no aceptan claves o IV con tamaños incorrectos, por lo que los modos de cifrado de bloques que requieran algún IV fallarán si no se proporciona uno.