SlideShare a Scribd company logo
1 of 13
Download to read offline
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

More Related Content

What's hot

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 2007Eric D.
 
20111006 bonnes pratiques-gi_g_v1
20111006 bonnes pratiques-gi_g_v120111006 bonnes pratiques-gi_g_v1
20111006 bonnes pratiques-gi_g_v1Gilles Guirand
 
Meetup CakePHP Amiens / 25 mars 2015
Meetup CakePHP Amiens / 25 mars 2015Meetup CakePHP Amiens / 25 mars 2015
Meetup CakePHP Amiens / 25 mars 2015Benjamin Lampérier
 
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.jsTelecomValley
 
Node.js et MongoDB: Mongoose
Node.js et MongoDB: MongooseNode.js et MongoDB: Mongoose
Node.js et MongoDB: Mongoosejeromegn
 
Introduction à Rails - Paris on Rails 2006
Introduction à Rails - Paris on Rails 2006Introduction à Rails - Paris on Rails 2006
Introduction à Rails - Paris on Rails 2006Eric D.
 
Présentation de nodejs
Présentation de nodejsPrésentation de nodejs
Présentation de nodejs13p
 
Toutes les raisons d'adopter MongoDB
Toutes les raisons d'adopter MongoDBToutes les raisons d'adopter MongoDB
Toutes les raisons d'adopter MongoDBContent Square
 
JavaScript pour le développeur Java
JavaScript pour le développeur JavaJavaScript pour le développeur Java
JavaScript pour le développeur Javajollivetc
 
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 ReactorFlorian Beaufumé
 
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 PHPKristen Le Liboux
 
Laravel yet another framework
Laravel  yet another frameworkLaravel  yet another framework
Laravel yet another frameworkLAHAXE Arnaud
 
Optimiser WordPress
Optimiser WordPressOptimiser WordPress
Optimiser WordPressChi Nacim
 
TDD for DevOps with Chef
TDD for DevOps with ChefTDD for DevOps with Chef
TDD for DevOps with ChefOlivier BAZOUD
 
YLT paris js - mars 2015
YLT paris js - mars 2015YLT paris js - mars 2015
YLT paris js - mars 2015gaelmetais
 

What's hot (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
 

Viewers also liked

01 Asociación De Alumnos
01 Asociación De Alumnos01 Asociación De Alumnos
01 Asociación De Alumnosseiscentros
 
Webinar Crm Para Instituciones Educativas
Webinar Crm Para Instituciones EducativasWebinar Crm Para Instituciones Educativas
Webinar Crm Para Instituciones EducativasPawissita
 
Influenza
InfluenzaInfluenza
Influenzagoneito
 
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 TrackingDexem
 
Grand prixpressemagazinefr
Grand prixpressemagazinefrGrand prixpressemagazinefr
Grand prixpressemagazinefrmagazinemediaBE
 
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éeXWiki
 
Snack S37-2015
Snack S37-2015Snack S37-2015
Snack S37-2015SNACK
 
Presentació De MemòRia
Presentació De MemòRiaPresentació De MemòRia
Presentació De MemòRiaguest44413c
 
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
 
WUD 2010 Paris : L'information sociale
WUD 2010 Paris : L'information socialeWUD 2010 Paris : L'information sociale
WUD 2010 Paris : L'information socialeFrederic CAVAZZA
 
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...Sébastien Bourguignon
 

Viewers also liked (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
 

Similar to Migrations PHP 5 - Solutions linux 2009

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 PHPhalleck45
 
Du JavaScript dans mon projet
Du JavaScript dans mon projetDu JavaScript dans mon projet
Du JavaScript dans mon projetjollivetc
 
Elasticsearch 5.0 les nouveautés
Elasticsearch 5.0 les nouveautésElasticsearch 5.0 les nouveautés
Elasticsearch 5.0 les nouveautésMathieu Elie
 
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 notesXavier Gorse
 
Chap01 introduction
Chap01 introductionChap01 introduction
Chap01 introductionPape Ndiaye
 
Migration PHP4-PHP5
Migration PHP4-PHP5Migration PHP4-PHP5
Migration PHP4-PHP5julien pauli
 
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 Componentscjolif
 
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 à ParisChipway
 
FreeBSD vs Linux, RMLL 2014
FreeBSD vs Linux, RMLL 2014FreeBSD vs Linux, RMLL 2014
FreeBSD vs Linux, RMLL 2014Loïc Tosser
 
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 maintenableLeTesteur
 
Ez18n theorie encoding gouvernance
Ez18n theorie encoding gouvernanceEz18n theorie encoding gouvernance
Ez18n theorie encoding gouvernancegdigugli
 
Frameworks php - Solutions Linux 2008
Frameworks php - Solutions Linux 2008Frameworks php - Solutions Linux 2008
Frameworks php - Solutions Linux 2008Eric 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 MySQLAlphorm
 
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 drupalAurelien Navarre
 
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 webNoël
 
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.pdfrachidimstapha
 
Presentation du gestionnaire de configuration Puppet
Presentation du gestionnaire de configuration PuppetPresentation du gestionnaire de configuration Puppet
Presentation du gestionnaire de configuration PuppetAurélie Henriot
 

Similar to 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
 

More from Eric D.

Bonnes pratiques API - Paris Web 2013
Bonnes pratiques API - Paris Web 2013Bonnes pratiques API - Paris Web 2013
Bonnes pratiques API - Paris Web 2013Eric D.
 
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 APIEric D.
 
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 2013Eric D.
 
Api - mix it 2013
Api - mix it 2013Api - mix it 2013
Api - mix it 2013Eric D.
 
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 2011Eric D.
 
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 2011Eric 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 CDNEric D.
 
Yahoo! Search monkey API - CEBIT 2008
Yahoo! Search monkey API - CEBIT 2008Yahoo! Search monkey API - CEBIT 2008
Yahoo! Search monkey API - CEBIT 2008Eric D.
 
Yahoo! Fire eagle API - CEBIT 2008
Yahoo! Fire eagle API - CEBIT 2008Yahoo! Fire eagle API - CEBIT 2008
Yahoo! Fire eagle API - CEBIT 2008Eric D.
 
Un web ouvert, Paris Web 2009
Un web ouvert, Paris Web 2009Un web ouvert, Paris Web 2009
Un web ouvert, Paris Web 2009Eric D.
 
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 2010Eric 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, ParisEric D.
 
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 2010Eric D.
 
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 2010Eric D.
 
Performances Web - Afup 2008
Performances Web - Afup 2008Performances Web - Afup 2008
Performances Web - Afup 2008Eric D.
 

More from 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