Bien que la plupart du code PHP 5 existant devrait fonctionner sans aucune modification, vous devez prendre en considération quelques incompatibilités ascendantes :
Précédemment, les tableaux déclarés comme des propriétés de classe qui mixaient des clés explicites et implicites pouvaient voir leurs éléments écrasés sans avertissement si une clé explicite était identique à une clé séquentielle implicite. Par exemple :
<?php
class C {
const ONE = 1;
public $array = [
self::ONE => 'foo',
'bar',
'quux',
];
}
var_dump((new C)->array);
?>
Résultat de l'exemple ci-dessus en PHP 5.5 :
array(2) { [0]=> string(3) "bar" [1]=> string(4) "quux" }
Résultat de l'exemple ci-dessus en PHP 5.6 :
array(3) { [1]=> string(3) "foo" [2]=> string(3) "bar" [3]=> string(4) "quux" }
json_decode() rejette maintenant les variantes non écrites en minuscule des littéraux JSON true, false et null, en accord avec la spécification JSON, et json_last_error() est renseignée en conséquence. Précédemment, les valeurs passées à json_decode() contenant l'une de ces valeurs en majuscules ou dans une casse mixte étaient acceptées.
Ce changement va affecter uniquement les cas ou du JSON invalide serait passé à json_decode() : du JSON valide ne sera pas affecté et sera analysé normalement.
Tous les flux clients cryptés activent désormais la vérification par paire par défaut. Par défaut, ceci va utiliser le CA OpenSSL par défaut pour vérifier la paire de certificat. Dans la plupart des cas, aucune modification n'a besoin d'être faite pour communiquer avec des serveurs et des certificats SSL valides, sachant que les distributeurs configurent généralement OpenSSL pour utiliser les CA connus.
Le CA par défaut peut être écrasé sur une base globale en utilisant les
options de configuration openssl.cafile ou openssl.capath, ou via une requête
basique en utilisant les options de contexte
cafile
ou
capath
.
Bien que ce ne soit pas conseillé en général, il est possible de désactiver la
vérification de certificats par paire pour une requête en définissant l'option
de contexte verify_peer
à FALSE
, et pour désactiver la validation du nom des paires, en configurant
l'option de contexte
verify_peer_name
à FALSE
.
Les ressources GMP sont maintenant des objets. L'API de l'extension GMP n'a pas changé et le code existant devrait continuer à fonctionner sans modification à moins qu'une vérification explicite ne soit faite en utilisant is_resource() ou équivalent.
mcrypt_encrypt(), mcrypt_decrypt(), mcrypt_cbc(), mcrypt_cfb(), mcrypt_ecb(), mcrypt_generic() et mcrypt_ofb() n'acceptent plus de clés ou de vecteurs d'initialisation (IVs) de tailles incorrectes, et les modes de ciphers par blocs qui requièrent des IVs échoueront désormais si un IV n'est pas fourni.