Migrer de PHP4 à PHP5

Vous avez écrit le code php de votre site il y a déjà plusieurs années, et vous n’êtes pas certain qu’il marche sous PHP5. Or, votre hébergeur va bientôt passer sur cette version. Vous n’avez pas de quoi tester si votre site est compatible ? Alors voilà un guide expliquant les différences entre les deux versions.

* strrpos et stripos() utilisent maintenant une chaine entière. A la base, ces fonctions recherchent l’occurence d’un seul caractère dans une chaine. * L’utilisation impropre d’un index sur une chaine de caractère produit une erreur E_ERROR au lien d’un avertissement E_WARNING (exemple :  »$str = ‘abc’; unset($str\[0\]); ») * array_merge() n’accepte plus que des tableaux. Si vous voulez rajouter un élément à un tableau et que vous voulez absolument utiliser cette fonction (et non array_push ou []), il va falloir mettre votre élément dans un taleau: array_merge($montableau, array ($monelement) ); Si vous utilisez quand même cette fonction avec un élément qui n’est pas un tableau, un avertissement E_WARNING est envoyé, et le tableau résultat est vide. * La variable serveur PATH_TRANSLATED ne contient plus forcément la même valeur qu’en PHP4. Elle était avant utilisée parfois dans le cas d’une réécriture des liens sous apache (ModRewrite). * La constante T_ML_CONSTANT n’existe plus (elle était définie par l’extension Tokenizer). * La version CLI de php5 utilisera toujours les variables globales $argc et $argv. * Un objet sans propriétés n’est plus considéré comme vide (empty) * get_class() retourne le nom de la fonction tel que déclaré, sans en modifier la casse. En PHP, le nom retourné était toujours en minuscule. De même pour les constantes magiques prédéfinies \__CLASS\__, \__METHOD\__ et \__FUNCTION\__. * ip2long() retourne maintenant le booléen faux (false) si l’adresse donnée est incorrecte. En PHP4, la fonction retournait -1. * La fonction is_a() est dépréciée et ne doit plus être utilisée. Il faut utiliser l’opérateur instanceof à la place. * Vous ne pouvez plus réassigner $this dans un objet. * include_once() et require_once() normalisent d’abord le chemin du fichier à inclure sous Windows, donc inclure le fichier A.php et le fichier a.php revient à n’inclure qu’une seule fois le fichier. * Certains mots clefs sont réservés par PHP5, et vous ne devez pas les utiliser :  »exception, interface, protected, throw, abstract, implements, clone, final, public, try, this, php_user_filter, private, catch »%%% La plupart de ces mots-clefs viennent de l’extension de la conception objet de php5, avec les concepts de variables privées/publiques, la gestion des erreurs (try/catch, que les fan de Java doivent connaitre par coeur) etc. %%% %%% __MAJ 14 juin 14h__%%% J’ai développé un [script qui vérifie si votre code PHP4 est compatible PHP5|http://www.olivierdoucet.info/scripts/?action=showsource&file=migration_php4-php5/migrationphp4_5.phps|fr]. Le script en question est une version alpha développée en 30minutes, donc loin d’être parfaite.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *