SlideShare une entreprise Scribd logo
1  sur  13
Télécharger pour lire hors ligne
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
La différence
function mod( $obj ) { $obj->test = ‘in’ ; }
$obj = new StdClass() ;
$obj->test = ‘out’ ;
mod( $obj ) ;
echo $obj->test ; // in ou out ?
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
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
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
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”
MySQL
• Officiellement remplacé par mysqli et pdo
• Non compatible builtin avec MySQL > 4.1
• Chercher :“mysql_connect”
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)
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/
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
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.)
Migration : pendant
• Aucune solution parfaite :-(
• Préparer
• Faire des tests
• Corriger
• Faire des tests
• Corriger
• Faire des tests ...
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

Contenu connexe

Tendances

Node.js et MongoDB: Mongoose
Node.js et MongoDB: MongooseNode.js et MongoDB: Mongoose
Node.js et MongoDB: Mongoose
jeromegn
 

Tendances (20)

Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007
Utiliser pleinement le navigateur et les nouveaux clients web  - AFUP 2007Utiliser pleinement le navigateur et les nouveaux clients web  - AFUP 2007
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007
 
20111006 bonnes pratiques-gi_g_v1
20111006 bonnes pratiques-gi_g_v120111006 bonnes pratiques-gi_g_v1
20111006 bonnes pratiques-gi_g_v1
 
Présentation de Node.js
Présentation de Node.jsPrésentation de Node.js
Présentation de Node.js
 
WebSocket avec Java EE 7
WebSocket avec Java EE 7WebSocket avec Java EE 7
WebSocket avec Java EE 7
 
Meetup CakePHP Amiens / 25 mars 2015
Meetup CakePHP Amiens / 25 mars 2015Meetup CakePHP Amiens / 25 mars 2015
Meetup CakePHP Amiens / 25 mars 2015
 
2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js
 
Node.js et MongoDB: Mongoose
Node.js et MongoDB: MongooseNode.js et MongoDB: Mongoose
Node.js et MongoDB: Mongoose
 
Introduction à Rails - Paris on Rails 2006
Introduction à Rails - Paris on Rails 2006Introduction à Rails - Paris on Rails 2006
Introduction à Rails - Paris on Rails 2006
 
Présentation de nodejs
Présentation de nodejsPrésentation de nodejs
Présentation de nodejs
 
Toutes les raisons d'adopter MongoDB
Toutes les raisons d'adopter MongoDBToutes les raisons d'adopter MongoDB
Toutes les raisons d'adopter MongoDB
 
JavaScript pour le développeur Java
JavaScript pour le développeur JavaJavaScript pour le développeur Java
JavaScript pour le développeur Java
 
Zenika MongoDB Tour - REX Amadeus
Zenika MongoDB Tour - REX AmadeusZenika MongoDB Tour - REX Amadeus
Zenika MongoDB Tour - REX Amadeus
 
Programmation réactive avec Spring 5 et Reactor
Programmation réactive avec Spring 5 et ReactorProgrammation réactive avec Spring 5 et Reactor
Programmation réactive avec Spring 5 et Reactor
 
Un exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPUn exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHP
 
Laravel yet another framework
Laravel  yet another frameworkLaravel  yet another framework
Laravel yet another framework
 
Php
PhpPhp
Php
 
Optimiser WordPress
Optimiser WordPressOptimiser WordPress
Optimiser WordPress
 
Optimiser wordpress
Optimiser wordpressOptimiser wordpress
Optimiser wordpress
 
TDD for DevOps with Chef
TDD for DevOps with ChefTDD for DevOps with Chef
TDD for DevOps with Chef
 
YLT paris js - mars 2015
YLT paris js - mars 2015YLT paris js - mars 2015
YLT paris js - mars 2015
 

En vedette

01 Asociación De Alumnos
01 Asociación De Alumnos01 Asociación De Alumnos
01 Asociación De Alumnos
seiscentros
 
Webinar Crm Para Instituciones Educativas
Webinar Crm Para Instituciones EducativasWebinar Crm Para Instituciones Educativas
Webinar Crm Para Instituciones Educativas
Pawissita
 
Influenza
InfluenzaInfluenza
Influenza
goneito
 
Grand prixpressemagazinefr
Grand prixpressemagazinefrGrand prixpressemagazinefr
Grand prixpressemagazinefr
magazinemediaBE
 
Presentació De MemòRia
Presentació De MemòRiaPresentació De MemòRia
Presentació De MemòRia
guest44413c
 
Diplìme_maåtrise_master_FR (Unicode Encoding Conflict)
Diplìme_maåtrise_master_FR (Unicode Encoding Conflict)Diplìme_maåtrise_master_FR (Unicode Encoding Conflict)
Diplìme_maåtrise_master_FR (Unicode Encoding Conflict)
Jakov Milicevic
 

En vedette (20)

Grupos1
Grupos1Grupos1
Grupos1
 
01 Asociación De Alumnos
01 Asociación De Alumnos01 Asociación De Alumnos
01 Asociación De Alumnos
 
Webinar Crm Para Instituciones Educativas
Webinar Crm Para Instituciones EducativasWebinar Crm Para Instituciones Educativas
Webinar Crm Para Instituciones Educativas
 
Ley de dependencia
Ley de dependenciaLey de dependencia
Ley de dependencia
 
Web 2.0
Web 2.0Web 2.0
Web 2.0
 
Introduccion Subversion
Introduccion SubversionIntroduccion Subversion
Introduccion Subversion
 
Influenza
InfluenzaInfluenza
Influenza
 
8 Sources de Trafic Web que vous pouvez suivre grâce au Call Tracking
8 Sources de Trafic Web que vous pouvez suivre grâce au Call Tracking8 Sources de Trafic Web que vous pouvez suivre grâce au Call Tracking
8 Sources de Trafic Web que vous pouvez suivre grâce au Call Tracking
 
Grand prixpressemagazinefr
Grand prixpressemagazinefrGrand prixpressemagazinefr
Grand prixpressemagazinefr
 
IntroStatBayes_chap1
IntroStatBayes_chap1IntroStatBayes_chap1
IntroStatBayes_chap1
 
Aeliapedia : la naissance et la croissance d'une idée
Aeliapedia : la naissance et la croissance d'une idéeAeliapedia : la naissance et la croissance d'une idée
Aeliapedia : la naissance et la croissance d'une idée
 
Snack S37-2015
Snack S37-2015Snack S37-2015
Snack S37-2015
 
Acetaia manicardi
Acetaia manicardiAcetaia manicardi
Acetaia manicardi
 
Presentació De MemòRia
Presentació De MemòRiaPresentació De MemòRia
Presentació De MemòRia
 
Diplìme_maåtrise_master_FR (Unicode Encoding Conflict)
Diplìme_maåtrise_master_FR (Unicode Encoding Conflict)Diplìme_maåtrise_master_FR (Unicode Encoding Conflict)
Diplìme_maåtrise_master_FR (Unicode Encoding Conflict)
 
Dossier de presse vesale 2013
Dossier de presse vesale 2013Dossier de presse vesale 2013
Dossier de presse vesale 2013
 
WUD 2010 Paris : L'information sociale
WUD 2010 Paris : L'information socialeWUD 2010 Paris : L'information sociale
WUD 2010 Paris : L'information sociale
 
Biografia edgar allan poe
Biografia edgar allan poeBiografia edgar allan poe
Biografia edgar allan poe
 
Alexandre Stopnicki - Extrait Livre Blanc 80 #PortraitDeStartuper - Le plus p...
Alexandre Stopnicki - Extrait Livre Blanc 80 #PortraitDeStartuper - Le plus p...Alexandre Stopnicki - Extrait Livre Blanc 80 #PortraitDeStartuper - Le plus p...
Alexandre Stopnicki - Extrait Livre Blanc 80 #PortraitDeStartuper - Le plus p...
 
8minutos
8minutos8minutos
8minutos
 

Similaire à Migrations PHP 5 - Solutions linux 2009

Chap01 introduction
Chap01 introductionChap01 introduction
Chap01 introduction
Pape Ndiaye
 
Développer et déployer une application php maintenable
Développer et déployer une application php maintenableDévelopper et déployer une application php maintenable
Développer et déployer une application php maintenable
LeTesteur
 
Frameworks php - Solutions Linux 2008
Frameworks php - Solutions Linux 2008Frameworks php - Solutions Linux 2008
Frameworks php - Solutions Linux 2008
Eric D.
 
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Normandie Web Xperts
 
Alphorm.com Support de la Formation PHP MySQL
Alphorm.com Support de la Formation PHP MySQLAlphorm.com Support de la Formation PHP MySQL
Alphorm.com Support de la Formation PHP MySQL
Alphorm
 
Meetup Drupal Lyon - Sécuriser un site drupal
Meetup Drupal Lyon - Sécuriser un site drupalMeetup Drupal Lyon - Sécuriser un site drupal
Meetup Drupal Lyon - Sécuriser un site drupal
Aurelien Navarre
 

Similaire à Migrations PHP 5 - Solutions linux 2009 (20)

Industrialiser le contrat dans un projet PHP
Industrialiser le contrat dans un projet PHPIndustrialiser le contrat dans un projet PHP
Industrialiser le contrat dans un projet PHP
 
Du JavaScript dans mon projet
Du JavaScript dans mon projetDu JavaScript dans mon projet
Du JavaScript dans mon projet
 
Elasticsearch 5.0 les nouveautés
Elasticsearch 5.0 les nouveautésElasticsearch 5.0 les nouveautés
Elasticsearch 5.0 les nouveautés
 
Orchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notesOrchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notes
 
Chap01 introduction
Chap01 introductionChap01 introduction
Chap01 introduction
 
Migration PHP4-PHP5
Migration PHP4-PHP5Migration PHP4-PHP5
Migration PHP4-PHP5
 
Etendre le Web avec les Web Components
Etendre le Web avec les Web ComponentsEtendre le Web avec les Web Components
Etendre le Web avec les Web Components
 
Conference drupal 8 au Forum PHP 2013 à Paris
Conference drupal 8 au Forum PHP 2013 à ParisConference drupal 8 au Forum PHP 2013 à Paris
Conference drupal 8 au Forum PHP 2013 à Paris
 
FreeBSD vs Linux, RMLL 2014
FreeBSD vs Linux, RMLL 2014FreeBSD vs Linux, RMLL 2014
FreeBSD vs Linux, RMLL 2014
 
Développer et déployer une application php maintenable
Développer et déployer une application php maintenableDévelopper et déployer une application php maintenable
Développer et déployer une application php maintenable
 
Ez18n theorie encoding gouvernance
Ez18n theorie encoding gouvernanceEz18n theorie encoding gouvernance
Ez18n theorie encoding gouvernance
 
Frameworks php - Solutions Linux 2008
Frameworks php - Solutions Linux 2008Frameworks php - Solutions Linux 2008
Frameworks php - Solutions Linux 2008
 
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
 
Des tests modernes pour Drupal
Des tests modernes pour DrupalDes tests modernes pour Drupal
Des tests modernes pour Drupal
 
Alphorm.com Support de la Formation PHP MySQL
Alphorm.com Support de la Formation PHP MySQLAlphorm.com Support de la Formation PHP MySQL
Alphorm.com Support de la Formation PHP MySQL
 
Meetup Drupal Lyon - Sécuriser un site drupal
Meetup Drupal Lyon - Sécuriser un site drupalMeetup Drupal Lyon - Sécuriser un site drupal
Meetup Drupal Lyon - Sécuriser un site drupal
 
08 01 mise en place d'un serveur web
08 01 mise en place d'un serveur web08 01 mise en place d'un serveur web
08 01 mise en place d'un serveur web
 
Developpement web dynamique_Base de donnees.pdf
Developpement web dynamique_Base de donnees.pdfDeveloppement web dynamique_Base de donnees.pdf
Developpement web dynamique_Base de donnees.pdf
 
Presentation du gestionnaire de configuration Puppet
Presentation du gestionnaire de configuration PuppetPresentation du gestionnaire de configuration Puppet
Presentation du gestionnaire de configuration Puppet
 
Présentation Puppet
Présentation PuppetPrésentation Puppet
Présentation Puppet
 

Plus de Eric D.

Api - mix it 2013
Api - mix it 2013Api - mix it 2013
Api - mix it 2013
Eric D.
 
Soirée webperf du 29 nov 2010 - Latence et CDN
Soirée webperf du 29 nov 2010 - Latence et CDNSoirée webperf du 29 nov 2010 - Latence et CDN
Soirée webperf du 29 nov 2010 - Latence et CDN
Eric D.
 
Yahoo! Search monkey API - CEBIT 2008
Yahoo! Search monkey API - CEBIT 2008Yahoo! Search monkey API - CEBIT 2008
Yahoo! Search monkey API - CEBIT 2008
Eric D.
 
Yahoo! Fire eagle API - CEBIT 2008
Yahoo! Fire eagle API - CEBIT 2008Yahoo! Fire eagle API - CEBIT 2008
Yahoo! Fire eagle API - CEBIT 2008
Eric D.
 
Introduction à la soirée webperf du 21 juillet 2010, Paris
Introduction à la soirée webperf du 21 juillet 2010, ParisIntroduction à la soirée webperf du 21 juillet 2010, Paris
Introduction à la soirée webperf du 21 juillet 2010, Paris
Eric D.
 

Plus de Eric D. (15)

Bonnes pratiques API - Paris Web 2013
Bonnes pratiques API - Paris Web 2013Bonnes pratiques API - Paris Web 2013
Bonnes pratiques API - Paris Web 2013
 
Blend Web Mix 2013 : Concevoir son API
Blend Web Mix 2013 : Concevoir son APIBlend Web Mix 2013 : Concevoir son API
Blend Web Mix 2013 : Concevoir son API
 
Un peu de TLS ne fait pas de mal - Sudweb 2013
Un peu de TLS ne fait pas de mal - Sudweb 2013Un peu de TLS ne fait pas de mal - Sudweb 2013
Un peu de TLS ne fait pas de mal - Sudweb 2013
 
Api - mix it 2013
Api - mix it 2013Api - mix it 2013
Api - mix it 2013
 
Performance des applications web - USI Casa 2011
Performance des applications web - USI Casa 2011Performance des applications web - USI Casa 2011
Performance des applications web - USI Casa 2011
 
Webpagetest en 5 minutes - Sud Web 2011
Webpagetest en 5 minutes - Sud Web 2011Webpagetest en 5 minutes - Sud Web 2011
Webpagetest en 5 minutes - Sud Web 2011
 
Soirée webperf du 29 nov 2010 - Latence et CDN
Soirée webperf du 29 nov 2010 - Latence et CDNSoirée webperf du 29 nov 2010 - Latence et CDN
Soirée webperf du 29 nov 2010 - Latence et CDN
 
Yahoo! Search monkey API - CEBIT 2008
Yahoo! Search monkey API - CEBIT 2008Yahoo! Search monkey API - CEBIT 2008
Yahoo! Search monkey API - CEBIT 2008
 
Yahoo! Fire eagle API - CEBIT 2008
Yahoo! Fire eagle API - CEBIT 2008Yahoo! Fire eagle API - CEBIT 2008
Yahoo! Fire eagle API - CEBIT 2008
 
Un web ouvert, Paris Web 2009
Un web ouvert, Paris Web 2009Un web ouvert, Paris Web 2009
Un web ouvert, Paris Web 2009
 
Performance des sites web : qui, pourquoi, quoi, comment et où ? - USI 2010
Performance des sites web : qui, pourquoi, quoi, comment et où ? - USI 2010Performance des sites web : qui, pourquoi, quoi, comment et où ? - USI 2010
Performance des sites web : qui, pourquoi, quoi, comment et où ? - USI 2010
 
Introduction à la soirée webperf du 21 juillet 2010, Paris
Introduction à la soirée webperf du 21 juillet 2010, ParisIntroduction à la soirée webperf du 21 juillet 2010, Paris
Introduction à la soirée webperf du 21 juillet 2010, Paris
 
Performance des sites web - Latence - AFUP 2010
Performance des sites web - Latence - AFUP 2010Performance des sites web - Latence - AFUP 2010
Performance des sites web - Latence - AFUP 2010
 
web, métier de valeur - Paris Web 2010
web, métier de valeur - Paris Web 2010web, métier de valeur - Paris Web 2010
web, métier de valeur - Paris Web 2010
 
Performances Web - Afup 2008
Performances Web - Afup 2008Performances Web - Afup 2008
Performances Web - Afup 2008
 

Migrations PHP 5 - Solutions linux 2009

  • 1. 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
  • 2. La différence function mod( $obj ) { $obj->test = ‘in’ ; } $obj = new StdClass() ; $obj->test = ‘out’ ; mod( $obj ) ; echo $obj->test ; // in ou out ?
  • 3. 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
  • 4. 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
  • 5. 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
  • 6. 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”
  • 7. MySQL • Officiellement remplacé par mysqli et pdo • Non compatible builtin avec MySQL > 4.1 • Chercher :“mysql_connect”
  • 8. 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)
  • 9. 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/
  • 10. 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
  • 11. 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.)
  • 12. Migration : pendant • Aucune solution parfaite :-( • Préparer • Faire des tests • Corriger • Faire des tests • Corriger • Faire des tests ...
  • 13. 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