13
Programmation objet La grande avancée de PHP 5 Tous les ajouts sont facultatifs Le code PHP 4 est compatible Sauf .... le passage par copie des objets

Migrations PHP 5 - Solutions linux 2009

  • Upload
    eric-d

  • View
    448

  • Download
    0

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Migrations PHP 5 - Solutions linux 2009

Programmation objet

• La grande avancée de PHP 5

• Tous les ajouts sont facultatifs

• Le code PHP 4 est compatible

• Sauf .... le passage par copie des objets

Page 2: Migrations PHP 5 - Solutions linux 2009

La différence

function mod( $obj ) { $obj->test = ‘in’ ; }

$obj = new StdClass() ;$obj->test = ‘out’ ;

mod( $obj ) ;

echo $obj->test ; // in ou out ?

Page 3: Migrations PHP 5 - Solutions linux 2009

Code déjà compatible ?

• Passage par référence explicite en PHP 4

• On utilise & (attention à ne pas en oublier)

• Compatible PHP 5 sans modification

• mais désactivation des erreurs strictes

Page 4: Migrations PHP 5 - Solutions linux 2009

Code non compatible ?

• zend.ze1_compatibility_mode = true

• interdit d’utiliser les nouveautés PHP 5

• stabilité non garantie

• Sinon : corriger votre code

• long, complexe, sans garantie de résultat

Page 5: Migrations PHP 5 - Solutions linux 2009

Problème

• Il n’y a aucune erreur de syntaxe

• Le code semble fonctionner

• Parfois ça fonctionne, d’autres pas

• Il faut comprendre le code pour le corriger

• Demande des tests exhaustifs

Page 6: Migrations PHP 5 - Solutions linux 2009

Corriger le code ?

• En haut de script :ini_set(‘zend.ze1_compatibility_mode’, ‘1’);

• Dans chaque classe :function __clone() { ...debug_backtrace()... }

• Vérification ligne à ligne des résultats

• remplacer si nécessaire par “clone”

Page 7: Migrations PHP 5 - Solutions linux 2009

MySQL

• Officiellement remplacé par mysqli et pdo

• Non compatible builtin avec MySQL > 4.1

• Chercher : “mysql_connect”

Page 8: Migrations PHP 5 - Solutions linux 2009

MySQL : solution

• Créer un utilisateur “spécifique PHP 4”

• Utiliser l’ancien système de mot de passe

• old_password() dans mysql à la création

• Mixer avec pdo/mysqli ?

• demande + de ressources (deux liens)

Page 9: Migrations PHP 5 - Solutions linux 2009

XML

• domxml et domxslt ont disparu

• remplacé par dom et xsl

• chercher “domxml” et “domdocument”

• Script d’émulation :http://alexandre.alapetite.net/doc-alex/domxml-php4-php5/

Page 10: Migrations PHP 5 - Solutions linux 2009

La Migration

• Lire la documentation officielle, les livres

• Préparer un jeu de test exhaustif

• Choisir entre

• activer le mode de compatibilité

• passer réellement en php 5

Page 11: Migrations PHP 5 - Solutions linux 2009

Migration : avant

• Faire un code PHP 4 compatible

• pear::compat, dbal, mise à jour des libs

• Préparer les dev PHP 5

• garder une norme de codage PHP 4(minuscules, extension mysql, etc.)

Page 12: Migrations PHP 5 - Solutions linux 2009

Migration : pendant

• Aucune solution parfaite :-(

• Préparer

• Faire des tests

• Corriger

• Faire des tests

• Corriger

• Faire des tests ...

Page 13: Migrations PHP 5 - Solutions linux 2009

Migration : après

• Régler les niveaux d’erreur (E_STRICT)

• Récupérer l’ancienne configuration php.ini

• Attention aux données partagées

• utilisateurs mysql (old_password)

• données sérialisées

• bibliothèques de code