déc
27
2009

Migrer de PHP 5.2 à 5.3 : Une synthèse

Ce tuto a pour objectif de faire un résumé concernant la migration de PHP 5.2 à PHP 5.3. J’ai fait une synthèse des informations que j’ai pu recueillir dans diverses sources sur internet. Mon objectif est aussi de m’en servir dans le cadre de la migration de plateforme de ecommerce que j’ai mise en place ClicShopping qui fonctionnait bien sous php 5.2 mais pas sous PHP 5.3.

Il ne s’agit pas de réecrire le document de PHP.net : http://fr.php.net/manual/fr/migration53.php. Suivre à la lettre ces informations peut ne pas suffire à avoir une application 100% compatible PHP 5.3, mais le plus gros du travail sera fait.

call_user_method()
  • Information : remplacer par call_user_func avec en tableau l’objet.
call_user_method_array()
  • Information : il faut réécrire proprement le code. Un foreach ne serait pas suffisant, la fonction call_user_method() étant dépréciée. Il faudra utiliser désormais call_user_func.
define_syslog_variables()
  • Information : suppression simple, les variables syslog n’ont plus besoin d’être initialisées.
  • Chaîne de recherche : define_syslog_variables();
  • Chaîne de remplacement : //define_syslog_variables()
ereg()
  • Information : utiliser preg_match.
  • ereg(« regex », devient preg_match(« #regex# »,
  • Précautions : penser à mettre les délimiteurs. Pas de remplacement automatique car il faut souvent corriger les expressions régulières (par exemple : « \. » devient « . »). Une relecture attentive s’impose.
ereg_replace()
  • Information : utiliser preg_replace.
  • ereg_replace(« regex », devient preg_replace(« #regex# »,
  • Précautions : penser à mettre les délimiteurs. Pas de remplacement automatique car il faut souvent corriger les expressions régulières (par exemple : « \. » devient « . »). Une relecture attentive s’impose.
eregi()
  • Information : utiliser preg_match.
  • eregi(« regex », devient preg_match(« #regex#i »,
  • Précautions : penser à mettre les délimiteurs et le i. Pas de remplacement automatique car il faut souvent corriger les expressions régulières (par exemple : « \. » devient « . »). Une relecture attentive s’impose.
eregi_replace()
  • Information : utiliser preg_replace.
  • eregi_replace(« regex », devient preg_replace(« #regex#i »,
  • Précautions : penser à mettre les délimiteurs et le i. Pas de remplacement automatique car il faut souvent corriger les expressions régulières (par exemple : « \. » devient « . »). Une relecture attentive s’impose.
set_magic_quotes_runtime()
  • Information : pas de remplacement automatique possible. Il faut passer en revue ses requêtes et les échapper, par exemple avec mysqli_escape_string().
session_register()
  • Information : utiliser $_SESSION['ma_variable'] = ‘toto’;
  • Chaîne de recherche : [^_]session_register\((.*?)\)
  • Chaîne de remplacement : \$_SESSION\[$1\]
  • Précautions : le [^_] est utile si vous avez des éléments type monframework_session…
session_unregister()
  • Information : utiliser unset($_SESSION['ma_variable'])
  • Chaîne de recherche : [^_]session_unregister\((.*?)\)
  • Chaîne de remplacement : unset\(\$_SESSION\[$1\]\)
  • Précautions : le [^_] est utile si vous avez des éléments type monframework_session…
session_is_registered()
  • Information : utiliser isset($_SESSION['ma_variable'])
  • Chaîne de recherche : [^_]session_is_register\((.*?)\)
  • Chaîne de remplacement : isset\(\$_SESSION\[$1\]\)
  • Précautions : le [^_] est utile si vous avez des éléments type monframework_session…
set_socket_blocking()
  • Information : fonction à remplacer.
  • Chaîne de recherche : set_socket_blocking(
  • Chaîne de remplacement : stream_set_blocking(
split()
  • Information : utiliser preg_split.
  • split(« regex », devient preg_split(« #regex# »,
  • Précautions : mettre les délimiteurs. Pas de remplacement automatique car il faut souvent corriger les expressions régulières (par exemple : « \. » devient « . »). Une relecture attentive s’impose. Explode() peut-être utile s’il n’y a pas besoin d’expression régulière.
spliti()
  • Information : utiliser preg_split.
  • spliti(« regex », devient preg_split(« #regex#i »,
  • Précautions : mettre les délimiteurs et le i. Pas de remplacement automatique car il faut souvent corriger les expressions régulières (par exemple : « \. » devient « . »). Une relecture attentive s’impose. Explode() peut-être utile s’il n’y a pas besoin d’expression régulière.
sql_regcase()
  • Information : devient inutile avec les expressions régulières POSIX.
dl()
  • Information : charger les extensions via php.ini à la place.
extension mysql
Ci possible passer à mysqli (meilleures performances). Inconvénient, on a souvent mysql*(A,B) qui devient mysqli*(B,A). Une relecture attentive du code est préférable à un changement automatisé.
mysql_db_query()
  • Information : fonction à remplacer par mysql_select_db() + mysql_query()
  • Chaîne de recherche : mysql_db_query(
  • Chaîne de remplacement : mysql_query(
  • Précautions : un remplacement automatique se fera généralement entre mysql_db_query et mysql_query. mysql_select_db pouvant être placé après mysql_connect.
mysql_escape_string()
  • Information : fonction à remplacer.
  • Chaîne de recherche : mysql_escape_string(
  • Chaîne de remplacement : mysql_real_escape_string(

Bonne chance car vous en aurez besoin !!

About the Author: Loïc Richard

Leave a comment

Get Adobe Flash playerPlugin by wpburn.com wordpress themes