Migrer de PHP 5.3 à PHP 5.4

Les développeurs de PHP ont choisis de se focaliser sur les performances plutôt que sur les nouvelles fonctionnalités sur la version 5.4 ; mais cette version est également un grand saut sur beaucoup de fonctions dépréciées, qui sont maintenant totalement supprimées.

La migration de la version 5.3 vers la 5.4 est donc une étape délicate (bien plus que de 5.2 vers 5.3), et de nombreux points sont à vérifier avant de se lancer dans l’opération.

Je rappelle que la documentation officielle reste le meilleur endroit pour préparer une migration. Voici sinon un récapitulatif :

  • Le safe mode a été totalement supprimé.
  • Les magic quotes ont été supprimées
  • Le mécanisme de register globals a été supprimé (une très bonne chose !)
  • Le passage par référence lors de l’appel (« call-time pass-by-reference » est maintenant refusé (erreur fatale). Il s’agit de code sous cette forme :
    mafonction(&$a);
  •  Les mots-clefs break et continue n’acceptent plus d’arguments variables :
    break 1 + foo()*$bar; // ne marche plus
    break 2; // fonctionne encore, car 2 n’est pas variable
    break 0; // ne fonctionne plus car ne veut rien dire
  •  Pour spécifier le fuseau horaire, vous devez utiliser la directive date.timezone (ou date_default_timezone_set()) comme vous le faisiez déjà depuis 5.2 ; la variable d’environnement TZ ne peut plus être utilisée (cas très rare)
  • L’utilisation d’offset sur des valeurs non numériques émet maintenant un E_WARNING :
    $a = « mystring »;
    $a[‘foo’]; // emet un E_WARNING
  •  La conversion d’un tableau en chaîne de caractère génère une erreur E_NOTICE, mais renvoie toujours la chaîne « Array ».
  • Vous ne pouvez plus utiliser des paramètres de fonction qui masquent des super globales (émet une FATAL ERROR). Exemple :
    function foo($_GET, $_POST) {}
  • Les algorithmes de hash Salsa10 et Salsa20 ont été supprimés (utilisation très rare)
  • Si vous passez deux tableaux vides à array_combine, la fonction renvoie maintenant array() au lieu de FALSE.
  • Les mots clefs suivants sont réservés :
    •  trait
    • callable
    • insteadof
  • Les fonctions suivantes ont été supprimées :

Les modifications les plus importantes sont :

  • la suppression du safe mode
  • La suppression des magic quotes
  • Et surtout la suppression de register_globals.


La mise à jour de PHP 5.3 vers 5.4 est donc tout à fait particulière et demande quelques préparatifs, surtout vis à vis des globals si vous les utilisiez (ce qui est une très mauvaise chose).

 

Laisser un commentaire

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