Base de connaissances: scripts > Php
Mise à jour vers php 5.3
Publié par Support AQUEOS, Modifié en dernier par sur 18 février 2012 01:43 PM

Migration vers php5.3 : les différences.

 

Entre la Debian lenny et la debian Squeeze nous évoluons de 5.2.6-1 vers 5.3.3-7, les différences sont très faibles mais existent bien sur sinon il n'y aurais pas d 'évolution.

Deux type de changements : les extensions obsolètes qui sont enlevées, et les changements du langage.

 

Détail complets sur http://www.php.net/manual/fr/migration53.php

Extensions Obsolètes

Ces extensions ont été placées dans PECL, et ne font plus partie de la distribution PHP. Le paquet PECL de ces extensions seront créés en fonction de la demande des utilisateurs.

  • dbase : plus entretenue.

  • fbsql : plus entretenue.

  • fdf : entretenue.

  • ming : entretenue.

  • msql : plus entretenue.

  • ncurses : entretenue.

  • sybase : abandonnée. Utilisez sybase_ct à la place, qui fait partie du coeur de PHP.

  • mhash : abandonnée. Utilisez plutôt hash à la place. hash supporte totalement mhash, et les applications seront compatibles.



La pluspart sont obsolètes depuis longtemps les scripts ont peu de chance de els utiliser il suffit de lire les besoins des sites pour avoir la liste des extentions dont le developeur avait besoin ( si il a documenté son travail bien sur).

Évolutions incompatibles avec les versions précédentes

Même si l'essentiel du code PHP 5 va fonctionner sans modification, il faut faire attention aux situations suivantes, qui sont incompatibles avec les versions précédentes :

  • L'API interne d'analyse des paramètres 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 va retourner FALSE en cas d'erreur.

  • clearstatcache() ne vide pas 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.

  • Les fonctions call_user_func() et similaires propagent la variable $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. Si vous avez besoin d'accéder à leurs propriétés comme dans un tableau, il faudra commencer par transtyper les objets en tableau.

  • 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 libmysql 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 et PDO::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.



  Certains CMS sont incompatibles avec php5.3 par exemple les vieilles versions de joomla mais toutes les versions à jours le sont. Si vous n'avez pas mis à jour votre CMS depuis plus d'un an vous aurez alors deux soucis : la compatibilité php5.3 n'est pas garantie et surtout le plus grave vous êtes fortement vulnérable au piratage.

Comme vous le voyez la liste des incompatibilités est très légère et ne concerne rien de très lourd comme une fonction travaillant sur des tableaux qui n'accepte désormais plus que des tableaux...:)

Vous avez tout en détail complet sur le site : http://www.php.net/manual/fr/migration53.php

Et pour la suite ? Pour se préparer au php5.4 voici quelques changements a garder en mémoire , a partir du php5.4 :

 

 

 

(30 vote(s))
Utile
Pas utile