Évolutions incompatibles avec les versions précédentes
Même si l'essentiel du code PHP 5 devrait fonctionner sans modification, il est à noter les changement non rétrocompatible :
-
L'API interne d'analyse des paramètres plus récente a été appliquée à toute
les extensions qui sont livrées avec PHP 5.3. Cette API retourne
NULL
si des paramètres incompatibles sont passés à la fonction. Il existe quelques exceptions, comme la fonction get_class() qui continue de retournerFALSE
en cas d'erreur. - clearstatcache() ne vide plus le cache de chemins de la fonction realpath() par défaut.
- realpath() est maintenant indépendant du système, et fonctionne sur toutes les plate-formes. Ceci a pour conséquence que les chemins relatifs incorrects comme __FILE__ . "/../x" ne fonctionnent plus.
- La famille des fonctions call_user_func() propagent $this, même si la fonction appelante est la classe parente.
- Les fonctions de tableaux : natsort(), natcasesort(), usort(), uasort(), uksort(), array_flip() et array_unique() n'acceptent plus les objets passés comme arguments. Pour appliquer ces fonctions à un objet transtyper l'objet en tableau d'abord.
- Le comportement des fonctions qui ont des paramètres par référence mais sont passés par valeur a changé. Alors que la fonction acceptait des arguments par valeur, une erreur fatale est maintenant émise. L'ancien code qui passait des constantes ou des valeurs à une fonction qui attendait des références doit être modifié pour assigner la valeur à une variable avant d'appeler la fonction.
- La nouvelle bibliothèque mysqlnd impose l'utilisation du nouveau format de mot de passe de MySQL 4.1 (et plus récent). L'utilisation du vieux format de 16 octets fait que mysql_connect() produit le message d'erreur suivant : "mysqlnd cannot connect to MySQL 4.1+ using old authentication".
-
La nouvelle bibliothèque mysqlnd ne lit pas les fichiers de configuration MySQL
(my.cnf/my.ini), alors que l'ancienne bibliothèque libmysqlclient le faisait. Si
votre code utilise les paramètres des fichiers de configuration MySQL, vous
pouvez les charger explicitement en utilisant la fonction
mysqli_options(). Notez que cela signifie que
les constantes spécifiques
PDO::MYSQL_ATTR_READ_DEFAULT_FILE
etPDO::MYSQL_ATTR_READ_DEFAULT_GROUP
ne sont pas définies si le support de MySQL dans PDO a été compilé avec mysqlnd. - Le caractère / final a été supprimé des retours de méthodes des classes SplFileInfo et des autres classes de dossier similaires.
- La fonction magique __toString n'accepte plus d'arguments.
- Les méthodes magiques __get, __set, __isset, __unset, __call doivent toujours être publiques, et ne peuvent plus être statiques. La signature des méthodes est vérifiée à la compilation.
- La méthode magique __call est appelée en cas d'accès à une méthode privée ou protégée.
- func_get_arg(), func_get_args() et func_num_args() ne peuvent plus être appelées depuis le contexte le plus éloigné d'un fichier qui a été inclus via include ou require depuis l'intérieur d'une fonction du fichier appelant.
- Une couche d'émulation pour l'extension MHASH a été ajoutée. Cependant, tous les algorithmes ne sont pas pris en charge, notamment l'algorithme s2k. Ceci signifie que s2k n'est plus disponible à partir de PHP 5.3.0.
Les mots-clé suivants sont maintenant réservés, et ne peuvent plus être utilisés dans les noms de fonctions, de classes, etc.
Version en cache
02/02/2025 01:32:25 Cette version de la page est en cache (à la date du 02/02/2025 01:32:25) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-migration53.incompatible.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.