SlideShare uma empresa Scribd logo
1 de 47
Quid de symfony 1 ? Marc Hugon Symfony live 2011 - Paris
Petite introduction Marc Hugon Directeur technique chez Sensio Développeur Symfony dès les toutes premières versions (0.4 voire moins) 15 ans de pratique du web
Symfony2 arrive La RC1 n’est toujours pas disponible, mais le cœur est « stable » Il y a déjà un grand nombre d’earlyadopters http://symfony2bundles.org/ et ses dizaines de projets, plus de 150 bundles Et quand on voit l’activité qui entoure Symfony2, on se dit que…
Youpi Image TODO http://www.flickr.com/photos/reservasdecoches/3126393248/
Mais il y a un autre point de vue Le nombre de projets existant en Symfony1.x est assez conséquent Il est donc toujours utile et nécessaire de travailler sur ces projets Dans ce contexte, le point de vue semble un peu différent…
La fin du monde Image TODO http://www.flickr.com/photos/cameracapers/1245066035/
Quid de symfony 1 ? Ne changez rien ! Continuez à faire du symfony 1.x ! Commencez vos nouveaux projets en symfony2 si ceux-ci sont indépendants de l’existant 1.x
Des questions ? Comment ça, ça a été rapide ?
Rappel Timeline Symfony1 Première apparition publique en octobre 2005 (0.4) Février 2007 : symfony 1.0 Juin 2008 : symfony 1.1 (avec upgrade) Novembre 2008 : symfony 1.2 (avec upgrade) 2005 2008
Rappel Timeline Symfony1 Décembre 2009 : symfony 1.3 (avec upgrade) Décembre 2009 : symfony 1.4 Janvier 2010 : fin du support symfony 1.0 D’ici peu : fin du support symfony 1.3 Décembre 2012 : fin du support 1.4 2009 2012
Et pendant ce temps-là… En octobre 2005 (0.4), PHP était en version 5.0.5 En février 2007 : version 5.2.1 Juin 2008 : version 5.2.6 Novembre 2008 : version 5.2.6 Décembre 2009 : version 5.3.1 Mars 2011 : version 5.3.5 2005 2011
Assurer la compatibilité c’est bien Permettre de monter de version de Symfony en conservant ce qu’on avait déjà fait auparavant Mettre à jour son serveur (PHP) avec des applications qui continuent à fonctionner
Mais ça a un prix Impossible de profiter des évolutions du langage si on veut assurer la rétro compatibilité
Si on résume 7 ans de maintenance et de compatibilité PHP pour Symfony 1.x Pas mal non ? Alors maintenant, on fait quoi ?
On ne se limite pas Fabien Potencier en mode R&D sur Symfony2 Jour J « le routing, je vais le conserver, ce qui avait été fait sur la version 1 était pas si mal que ça » Jour J+x « finalement j’ai eu de nouvelles idées, j’ai vu des choses intéressantes là, ici, et là, j’ai tout réécrit, c’est beaucoup mieux car… »
Et donc Symfony2 n’assure pas la rétro compatibilité avec Symfony1 Pas d’upgrade Non Pas d’upgrade
Mais pourquoi ? Assurance que Symfony2 a été réalisé pour profiter au maximum de PHP 5.3 D’ailleurs Symfony2 nécessite PHP5.3.2 au minimum
Donc il n’y pas d’upgrade ? Hum… Je l’ai déjà dit il me semble Mais est-il quand même possible de migrer une application Symfony1.x en Symfony2?
Dans un monde idéal L’application source est testée unitairement et fonctionnellement Les tests sont migrés dans l’application Symfony2 Les plugins de l’application source sont traduits en bundle Symfony2 Ce qui n’était pas un plugin est porté en bundle Symfony2 Tout marche !
Parlons des tests Symfony1.x : Lime Symfony2 : PHPUnit
Migration des tests unitaires Pour les plus courageux : Créer une surcharge de Lime qui transforme ces appels en version PHPUnit Sinon Modifier vos tests manuellement pour les écrire en PHPUnit dans votre application Symfony1. Ils sont prêts pour Symfony2
Migration des tests fonctionnels Jusqu’à un certain point, les tests fonctionnels écrit en Symfony1 peuvent être réutilisés. Les problèmes commencent quand on interagit dans le cœur de l’applications sur des tests fonctionnels (appel à Doctrine par exemple)
Autres outils recommandés Avec un outil tel que Selenium (voire cubictest), vous faites du vrai test fonctionnel, et c’est compatible tout framework (http://cubictest.seleniumhq.org/)
Ok, mes tests sont prêts Prochaine étape que nous vous proposons de faire Rajouter une surcouche Symfony2 sur l’existant Symfony 1 (voir la présentation « nice performance using Sf2 cache wrapping Sf1 application » pour la façon de le faire)
Mais, et mes perfs ? La surcharge est très légère en terme de performances En fait, ça vous permet même très rapidement de gagner en performances ! Le cache HTTP devient en effet disponible !
L’ORM : le cas doctrine Symfony2 coïncide avec la mise à disposition de Doctrine2 Il est donc assez naturel de vouloir faire cette migration Mon conseil : attendez d’avoir fait le reste ! Utilisez Doctrine1 pour le moment
Doctrine1 et Symfony2 ? Et oui Vous pouvez utiliser un loader spécifique qui vous permettra de retrouver un auto loading compatible avec l’existant Symfony1 (MapFileClassLoader)
ORM : Propel Ne nécessite pas de changement majeur, c’est le même Propel https://github.com/willdurand/PropelBundle
Transformation plugin -> bundle L’arborescence cible la suivante (non exhaustif) : BundleName Command Controller Entity Form Resources Views Tests
Command Exécution de tâche disponibles dans la console symfony2 Equivalent par exemple de lib/task dans vos plugins Portage assez peu complexe, porte principalement sur les entrées / sorties
Controller Tous les contrôleurs sont regroupés dans un seul répertoire Dans Symfony1 ils se trouvent dans chaque module de votre plugin Comme vos contrôleurs ne contiennent pas plus de 5 lignes de code par action, la migration est simple (comme quoi une bonne pratique, ça peut servir)
Entity C’est le lib/model de vos plugins actuel Pas d’autres changements à apporter mis à part la problématique de l’ORM…
Form Le framework dédié présent dans les dernières versions de la branche 1 a été abandonné (qui n’a pas souffert sur les formulaires imbriqués ?) Symfony2 propose un nouveau framework dédié Pas vraiment de migration possible, c’est plus un travail de réécriture
Views Twig préconisé dans Symfony2, mais PHP est aussi supporté Sauf que… Partial, Component, Slot => Include, Slot
Helpers Conceptuellement, toujours présents Pratiquement, plutôt absents Mais ça ne représente que quelques lignes de code à chaque fois, migration assez simple
Un petit détail Le routing Symfony2 En twig : <a href="{{ path("blog_archives" }}"> Archives </a>
Admingenerator Hum…. On vous a dit qu’il fallait être patient ;)
L’activation de votre bundle Quand vous vous êtes sorti des embuches précédentes Pour chaque bundle créé, vous indiquez la route correspondante dans Symfony2 et vous y êtes, Symfony2 a pris la main Au suivant, sauf que…
Tout ne dépend pas toujours de vous Si votre projet dépend de plugins symfony1 faits par des tiers, vous risquez de ne pas avoir de mise à jour, ou d’avoir une refonte plutôt qu’une mise à jour Un exemple ? sfGuard and co
Pour résumer Migration = Réécriture Heureusement, elle peut être progressive Dans la plupart des cas, vous pouvez utiliser les composants Symfony1 dans votre applicatif Symfony2 (pour les formulaires par exemple)
Comment faire une transition ? Chaque cas est spécifique Nombre d’applications Maintenance et évolutions Possibilité de découper les applicatifs et de les isoler Environnement technique Roadmap
On peut la préparer Utiliser les namespace Utiliser PHPUnit et abandonner lime pour les tests fonctionnels Utiliser le cache HTTP de Symfony2 Utiliser des composants de Symfony2 Bref, commencer à réécrire vos applications pour quitter petit à petit Symfony1
Un truc Plus vos applications sont découplées Plus vous respectez les bonnes pratiques Plus facilement vous pourrez travailler pas à pas sur votre migration
Mais n’oubliez pas Symfony1 fonctionne Symfony1 est rapide Symfony1 est maintenu Symfony2 n’est pas encore RC1
Quid de symfony1 ? Ne changez rien ! Continuez à faire du symfony 1.x ! Commencez vos nouveaux projets en symfony2 si ceux-ci sont indépendants de l’existant 1.x
Et on peut vous aider Sensiolabs propose : Une extension du support symfony1 Un accompagnement sur mesure sur votre chemin vers Symfony2 Formations Conseil Architecture Développement http://www.sensiolabs.com
Merci Des questions ?

Mais conteúdo relacionado

Mais procurados

Une application en deux heure - PHP Québec Janvier 2009
Une application en deux heure - PHP Québec Janvier 2009Une application en deux heure - PHP Québec Janvier 2009
Une application en deux heure - PHP Québec Janvier 2009Philippe Gamache
 
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)Fabien Potencier
 
symfony : Un Framework Open-Source pour les Professionnels
symfony : Un Framework Open-Source pour les Professionnelssymfony : Un Framework Open-Source pour les Professionnels
symfony : Un Framework Open-Source pour les ProfessionnelsFabien Potencier
 
TypeScript for dummies
TypeScript for dummiesTypeScript for dummies
TypeScript for dummiesMicrosoft
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation MavenArnaud Héritier
 
Performance au quotidien dans un environnement symfony
Performance au quotidien dans un environnement symfonyPerformance au quotidien dans un environnement symfony
Performance au quotidien dans un environnement symfonyXavier Leune
 
Présentation de PHP 5.4 [FR]
Présentation de PHP 5.4 [FR]Présentation de PHP 5.4 [FR]
Présentation de PHP 5.4 [FR]Wixiweb
 
Symfony3 overview
Symfony3 overviewSymfony3 overview
Symfony3 overviewSymfonyMu
 
AFUP & PHP @ Supelec
AFUP & PHP @ SupelecAFUP & PHP @ Supelec
AFUP & PHP @ Supelecjulien pauli
 
Synchroniser ses applications plus rapidement avec du low-code
Synchroniser ses applications plus rapidement avec du low-codeSynchroniser ses applications plus rapidement avec du low-code
Synchroniser ses applications plus rapidement avec du low-codegplanchat
 
Synchroniser ses applications (plus) simplement
Synchroniser ses applications (plus) simplementSynchroniser ses applications (plus) simplement
Synchroniser ses applications (plus) simplementgplanchat
 
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
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache MavenArnaud Héritier
 
Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5Microsoft
 
Lbv Dev Meetup #1
Lbv Dev Meetup #1Lbv Dev Meetup #1
Lbv Dev Meetup #1LbvDev
 
Introduction TypeScript
Introduction TypeScriptIntroduction TypeScript
Introduction TypeScriptfelixbillon
 
Symfony 2 : chapitre 1 - Présentation Générale
Symfony 2 : chapitre 1 - Présentation GénéraleSymfony 2 : chapitre 1 - Présentation Générale
Symfony 2 : chapitre 1 - Présentation GénéraleAbdelkader Rhouati
 
Presentation Symfony
Presentation SymfonyPresentation Symfony
Presentation SymfonyJeremy Gachet
 
Apache for développeurs PHP
Apache for développeurs PHPApache for développeurs PHP
Apache for développeurs PHPjulien pauli
 

Mais procurados (20)

Une application en deux heure - PHP Québec Janvier 2009
Une application en deux heure - PHP Québec Janvier 2009Une application en deux heure - PHP Québec Janvier 2009
Une application en deux heure - PHP Québec Janvier 2009
 
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
 
symfony : Un Framework Open-Source pour les Professionnels
symfony : Un Framework Open-Source pour les Professionnelssymfony : Un Framework Open-Source pour les Professionnels
symfony : Un Framework Open-Source pour les Professionnels
 
TypeScript for dummies
TypeScript for dummiesTypeScript for dummies
TypeScript for dummies
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven
 
Performance au quotidien dans un environnement symfony
Performance au quotidien dans un environnement symfonyPerformance au quotidien dans un environnement symfony
Performance au quotidien dans un environnement symfony
 
Présentation de PHP 5.4 [FR]
Présentation de PHP 5.4 [FR]Présentation de PHP 5.4 [FR]
Présentation de PHP 5.4 [FR]
 
Symfony3 overview
Symfony3 overviewSymfony3 overview
Symfony3 overview
 
Php 100k
Php 100kPhp 100k
Php 100k
 
AFUP & PHP @ Supelec
AFUP & PHP @ SupelecAFUP & PHP @ Supelec
AFUP & PHP @ Supelec
 
Synchroniser ses applications plus rapidement avec du low-code
Synchroniser ses applications plus rapidement avec du low-codeSynchroniser ses applications plus rapidement avec du low-code
Synchroniser ses applications plus rapidement avec du low-code
 
Synchroniser ses applications (plus) simplement
Synchroniser ses applications (plus) simplementSynchroniser ses applications (plus) simplement
Synchroniser ses applications (plus) simplement
 
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
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache Maven
 
Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5
 
Lbv Dev Meetup #1
Lbv Dev Meetup #1Lbv Dev Meetup #1
Lbv Dev Meetup #1
 
Introduction TypeScript
Introduction TypeScriptIntroduction TypeScript
Introduction TypeScript
 
Symfony 2 : chapitre 1 - Présentation Générale
Symfony 2 : chapitre 1 - Présentation GénéraleSymfony 2 : chapitre 1 - Présentation Générale
Symfony 2 : chapitre 1 - Présentation Générale
 
Presentation Symfony
Presentation SymfonyPresentation Symfony
Presentation Symfony
 
Apache for développeurs PHP
Apache for développeurs PHPApache for développeurs PHP
Apache for développeurs PHP
 

Destaque

Sip innovcit-nouveaux profs
Sip innovcit-nouveaux profsSip innovcit-nouveaux profs
Sip innovcit-nouveaux profsinnovacite
 
Informe sobre la evolución de los proyectos de la estrategia de cronicidad
Informe sobre  la evolución de  los proyectos  de la estrategia  de cronicidadInforme sobre  la evolución de  los proyectos  de la estrategia  de cronicidad
Informe sobre la evolución de los proyectos de la estrategia de cronicidadAlfredo Alday
 
Numérique et projets urbains mise en perspective
Numérique et projets urbains mise en perspectiveNumérique et projets urbains mise en perspective
Numérique et projets urbains mise en perspectiveCap'Com
 
Copyrightmisskarina
CopyrightmisskarinaCopyrightmisskarina
Copyrightmisskarinakarinacead
 
Nicolas maurice - Pefecture de police de Paris
Nicolas maurice - Pefecture de police de ParisNicolas maurice - Pefecture de police de Paris
Nicolas maurice - Pefecture de police de ParisCap'Com
 
Journal special RUP
Journal special RUPJournal special RUP
Journal special RUPlafontaine
 
planeacion educativa superior en mexico
planeacion educativa superior en mexicoplaneacion educativa superior en mexico
planeacion educativa superior en mexicoAntonio Soto
 
Introduction to wcf solutions
Introduction to wcf solutionsIntroduction to wcf solutions
Introduction to wcf solutionsMICTT Palma
 
#capcom15 - AT9 : Mettre en place des groupes de citoyens référents
#capcom15 - AT9 : Mettre en place des groupes de citoyens référents#capcom15 - AT9 : Mettre en place des groupes de citoyens référents
#capcom15 - AT9 : Mettre en place des groupes de citoyens référentsCap'Com
 
Atelier - Comment valoriser les agents de proximité auprès des habitants ? - ...
Atelier - Comment valoriser les agents de proximité auprès des habitants ? - ...Atelier - Comment valoriser les agents de proximité auprès des habitants ? - ...
Atelier - Comment valoriser les agents de proximité auprès des habitants ? - ...Cap'Com
 
Paysage et anthropologie 2
Paysage et anthropologie 2Paysage et anthropologie 2
Paysage et anthropologie 2chapline
 
Séminaire SFMC du 27 janvier 2016
Séminaire SFMC du 27 janvier 2016Séminaire SFMC du 27 janvier 2016
Séminaire SFMC du 27 janvier 2016Jan-Cedric Hansen
 
Mairie de Bordeaux_Christophe Colinet_La nécessaire évolution et adaptation d...
Mairie de Bordeaux_Christophe Colinet_La nécessaire évolution et adaptation d...Mairie de Bordeaux_Christophe Colinet_La nécessaire évolution et adaptation d...
Mairie de Bordeaux_Christophe Colinet_La nécessaire évolution et adaptation d...Metro'num 2011
 
Looping de vapor de agua - precipitación
Looping de vapor de agua - precipitaciónLooping de vapor de agua - precipitación
Looping de vapor de agua - precipitaciónbibliojengibre
 
Termodinamica2
Termodinamica2Termodinamica2
Termodinamica2Saul Duque
 
Guide eryica sécurité & qualité en ligne francais
Guide eryica sécurité & qualité en ligne francaisGuide eryica sécurité & qualité en ligne francais
Guide eryica sécurité & qualité en ligne francaisInfoJeunesse ValdOise
 

Destaque (20)

Sip innovcit-nouveaux profs
Sip innovcit-nouveaux profsSip innovcit-nouveaux profs
Sip innovcit-nouveaux profs
 
Jean-Charles Brisard
Jean-Charles BrisardJean-Charles Brisard
Jean-Charles Brisard
 
Informe sobre la evolución de los proyectos de la estrategia de cronicidad
Informe sobre  la evolución de  los proyectos  de la estrategia  de cronicidadInforme sobre  la evolución de  los proyectos  de la estrategia  de cronicidad
Informe sobre la evolución de los proyectos de la estrategia de cronicidad
 
Numérique et projets urbains mise en perspective
Numérique et projets urbains mise en perspectiveNumérique et projets urbains mise en perspective
Numérique et projets urbains mise en perspective
 
Copyrightmisskarina
CopyrightmisskarinaCopyrightmisskarina
Copyrightmisskarina
 
Nicolas maurice - Pefecture de police de Paris
Nicolas maurice - Pefecture de police de ParisNicolas maurice - Pefecture de police de Paris
Nicolas maurice - Pefecture de police de Paris
 
Journal special RUP
Journal special RUPJournal special RUP
Journal special RUP
 
planeacion educativa superior en mexico
planeacion educativa superior en mexicoplaneacion educativa superior en mexico
planeacion educativa superior en mexico
 
Introduction to wcf solutions
Introduction to wcf solutionsIntroduction to wcf solutions
Introduction to wcf solutions
 
Estadistica esad
Estadistica esadEstadistica esad
Estadistica esad
 
#capcom15 - AT9 : Mettre en place des groupes de citoyens référents
#capcom15 - AT9 : Mettre en place des groupes de citoyens référents#capcom15 - AT9 : Mettre en place des groupes de citoyens référents
#capcom15 - AT9 : Mettre en place des groupes de citoyens référents
 
Atelier - Comment valoriser les agents de proximité auprès des habitants ? - ...
Atelier - Comment valoriser les agents de proximité auprès des habitants ? - ...Atelier - Comment valoriser les agents de proximité auprès des habitants ? - ...
Atelier - Comment valoriser les agents de proximité auprès des habitants ? - ...
 
Paysage et anthropologie 2
Paysage et anthropologie 2Paysage et anthropologie 2
Paysage et anthropologie 2
 
Presentación de la jornada
Presentación de la jornadaPresentación de la jornada
Presentación de la jornada
 
Séminaire SFMC du 27 janvier 2016
Séminaire SFMC du 27 janvier 2016Séminaire SFMC du 27 janvier 2016
Séminaire SFMC du 27 janvier 2016
 
Mairie de Bordeaux_Christophe Colinet_La nécessaire évolution et adaptation d...
Mairie de Bordeaux_Christophe Colinet_La nécessaire évolution et adaptation d...Mairie de Bordeaux_Christophe Colinet_La nécessaire évolution et adaptation d...
Mairie de Bordeaux_Christophe Colinet_La nécessaire évolution et adaptation d...
 
Brandsen
BrandsenBrandsen
Brandsen
 
Looping de vapor de agua - precipitación
Looping de vapor de agua - precipitaciónLooping de vapor de agua - precipitación
Looping de vapor de agua - precipitación
 
Termodinamica2
Termodinamica2Termodinamica2
Termodinamica2
 
Guide eryica sécurité & qualité en ligne francais
Guide eryica sécurité & qualité en ligne francaisGuide eryica sécurité & qualité en ligne francais
Guide eryica sécurité & qualité en ligne francais
 

Semelhante a Quid de vos applications symfony 1

Atelier Symfony2- Introduction
Atelier Symfony2- IntroductionAtelier Symfony2- Introduction
Atelier Symfony2- IntroductionMarwa OUNALLI
 
Symfony 4 2019
Symfony 4 2019Symfony 4 2019
Symfony 4 2019Eric Para
 
retour sur confoo2011 et Symfony2
retour sur confoo2011 et Symfony2retour sur confoo2011 et Symfony2
retour sur confoo2011 et Symfony2Saad Tazi
 
Presentation du framework symfony
Presentation du framework symfonyPresentation du framework symfony
Presentation du framework symfonyJeremy Gachet
 
Symfony2 Presentation
Symfony2 PresentationSymfony2 Presentation
Symfony2 Presentationyllieth
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureMarc Nazarian
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureJonathan Bonzy
 
Cologne Web Performance Optimization Group Web - Varnish
Cologne Web Performance Optimization Group Web - VarnishCologne Web Performance Optimization Group Web - Varnish
Cologne Web Performance Optimization Group Web - VarnishD
 
Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Yves-Emmanuel Jutard
 
Présentation symfony epita
Présentation symfony epitaPrésentation symfony epita
Présentation symfony epitaNoel GUILBERT
 
Lotus Symphony Family
Lotus Symphony Family Lotus Symphony Family
Lotus Symphony Family Vincent Perrin
 
Eef 1.0 for eclipse indigo
Eef 1.0 for eclipse indigoEef 1.0 for eclipse indigo
Eef 1.0 for eclipse indigoglefur
 
20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders Battle20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders BattleArnaud Héritier
 
Atelier symfony n 1
Atelier symfony n 1Atelier symfony n 1
Atelier symfony n 1Amir Souissi
 
La Console Symfony
La Console Symfony La Console Symfony
La Console Symfony Imad ZAIRIG
 

Semelhante a Quid de vos applications symfony 1 (20)

Atelier Symfony2- Introduction
Atelier Symfony2- IntroductionAtelier Symfony2- Introduction
Atelier Symfony2- Introduction
 
Symfony 4 2019
Symfony 4 2019Symfony 4 2019
Symfony 4 2019
 
retour sur confoo2011 et Symfony2
retour sur confoo2011 et Symfony2retour sur confoo2011 et Symfony2
retour sur confoo2011 et Symfony2
 
Presentation du framework symfony
Presentation du framework symfonyPresentation du framework symfony
Presentation du framework symfony
 
Compte rendu Blend Web Mix 2015
Compte rendu Blend Web Mix 2015Compte rendu Blend Web Mix 2015
Compte rendu Blend Web Mix 2015
 
Symfony2 Presentation
Symfony2 PresentationSymfony2 Presentation
Symfony2 Presentation
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeure
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeure
 
Cologne Web Performance Optimization Group Web - Varnish
Cologne Web Performance Optimization Group Web - VarnishCologne Web Performance Optimization Group Web - Varnish
Cologne Web Performance Optimization Group Web - Varnish
 
Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014
 
Symfony
SymfonySymfony
Symfony
 
Présentation symfony epita
Présentation symfony epitaPrésentation symfony epita
Présentation symfony epita
 
Lotus Symphony Family
Lotus Symphony Family Lotus Symphony Family
Lotus Symphony Family
 
Eef 1.0 for eclipse indigo
Eef 1.0 for eclipse indigoEef 1.0 for eclipse indigo
Eef 1.0 for eclipse indigo
 
20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders Battle20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders Battle
 
Etude des Frameworks PHP
Etude des Frameworks PHPEtude des Frameworks PHP
Etude des Frameworks PHP
 
Symfony 2 et le Web
Symfony 2 et le WebSymfony 2 et le Web
Symfony 2 et le Web
 
Symfony et le Web
Symfony et le WebSymfony et le Web
Symfony et le Web
 
Atelier symfony n 1
Atelier symfony n 1Atelier symfony n 1
Atelier symfony n 1
 
La Console Symfony
La Console Symfony La Console Symfony
La Console Symfony
 

Quid de vos applications symfony 1

  • 1. Quid de symfony 1 ? Marc Hugon Symfony live 2011 - Paris
  • 2. Petite introduction Marc Hugon Directeur technique chez Sensio Développeur Symfony dès les toutes premières versions (0.4 voire moins) 15 ans de pratique du web
  • 3. Symfony2 arrive La RC1 n’est toujours pas disponible, mais le cœur est « stable » Il y a déjà un grand nombre d’earlyadopters http://symfony2bundles.org/ et ses dizaines de projets, plus de 150 bundles Et quand on voit l’activité qui entoure Symfony2, on se dit que…
  • 4. Youpi Image TODO http://www.flickr.com/photos/reservasdecoches/3126393248/
  • 5. Mais il y a un autre point de vue Le nombre de projets existant en Symfony1.x est assez conséquent Il est donc toujours utile et nécessaire de travailler sur ces projets Dans ce contexte, le point de vue semble un peu différent…
  • 6. La fin du monde Image TODO http://www.flickr.com/photos/cameracapers/1245066035/
  • 7. Quid de symfony 1 ? Ne changez rien ! Continuez à faire du symfony 1.x ! Commencez vos nouveaux projets en symfony2 si ceux-ci sont indépendants de l’existant 1.x
  • 8. Des questions ? Comment ça, ça a été rapide ?
  • 9. Rappel Timeline Symfony1 Première apparition publique en octobre 2005 (0.4) Février 2007 : symfony 1.0 Juin 2008 : symfony 1.1 (avec upgrade) Novembre 2008 : symfony 1.2 (avec upgrade) 2005 2008
  • 10. Rappel Timeline Symfony1 Décembre 2009 : symfony 1.3 (avec upgrade) Décembre 2009 : symfony 1.4 Janvier 2010 : fin du support symfony 1.0 D’ici peu : fin du support symfony 1.3 Décembre 2012 : fin du support 1.4 2009 2012
  • 11. Et pendant ce temps-là… En octobre 2005 (0.4), PHP était en version 5.0.5 En février 2007 : version 5.2.1 Juin 2008 : version 5.2.6 Novembre 2008 : version 5.2.6 Décembre 2009 : version 5.3.1 Mars 2011 : version 5.3.5 2005 2011
  • 12. Assurer la compatibilité c’est bien Permettre de monter de version de Symfony en conservant ce qu’on avait déjà fait auparavant Mettre à jour son serveur (PHP) avec des applications qui continuent à fonctionner
  • 13. Mais ça a un prix Impossible de profiter des évolutions du langage si on veut assurer la rétro compatibilité
  • 14. Si on résume 7 ans de maintenance et de compatibilité PHP pour Symfony 1.x Pas mal non ? Alors maintenant, on fait quoi ?
  • 15. On ne se limite pas Fabien Potencier en mode R&D sur Symfony2 Jour J « le routing, je vais le conserver, ce qui avait été fait sur la version 1 était pas si mal que ça » Jour J+x « finalement j’ai eu de nouvelles idées, j’ai vu des choses intéressantes là, ici, et là, j’ai tout réécrit, c’est beaucoup mieux car… »
  • 16. Et donc Symfony2 n’assure pas la rétro compatibilité avec Symfony1 Pas d’upgrade Non Pas d’upgrade
  • 17. Mais pourquoi ? Assurance que Symfony2 a été réalisé pour profiter au maximum de PHP 5.3 D’ailleurs Symfony2 nécessite PHP5.3.2 au minimum
  • 18. Donc il n’y pas d’upgrade ? Hum… Je l’ai déjà dit il me semble Mais est-il quand même possible de migrer une application Symfony1.x en Symfony2?
  • 19. Dans un monde idéal L’application source est testée unitairement et fonctionnellement Les tests sont migrés dans l’application Symfony2 Les plugins de l’application source sont traduits en bundle Symfony2 Ce qui n’était pas un plugin est porté en bundle Symfony2 Tout marche !
  • 20. Parlons des tests Symfony1.x : Lime Symfony2 : PHPUnit
  • 21. Migration des tests unitaires Pour les plus courageux : Créer une surcharge de Lime qui transforme ces appels en version PHPUnit Sinon Modifier vos tests manuellement pour les écrire en PHPUnit dans votre application Symfony1. Ils sont prêts pour Symfony2
  • 22. Migration des tests fonctionnels Jusqu’à un certain point, les tests fonctionnels écrit en Symfony1 peuvent être réutilisés. Les problèmes commencent quand on interagit dans le cœur de l’applications sur des tests fonctionnels (appel à Doctrine par exemple)
  • 23. Autres outils recommandés Avec un outil tel que Selenium (voire cubictest), vous faites du vrai test fonctionnel, et c’est compatible tout framework (http://cubictest.seleniumhq.org/)
  • 24. Ok, mes tests sont prêts Prochaine étape que nous vous proposons de faire Rajouter une surcouche Symfony2 sur l’existant Symfony 1 (voir la présentation « nice performance using Sf2 cache wrapping Sf1 application » pour la façon de le faire)
  • 25. Mais, et mes perfs ? La surcharge est très légère en terme de performances En fait, ça vous permet même très rapidement de gagner en performances ! Le cache HTTP devient en effet disponible !
  • 26. L’ORM : le cas doctrine Symfony2 coïncide avec la mise à disposition de Doctrine2 Il est donc assez naturel de vouloir faire cette migration Mon conseil : attendez d’avoir fait le reste ! Utilisez Doctrine1 pour le moment
  • 27. Doctrine1 et Symfony2 ? Et oui Vous pouvez utiliser un loader spécifique qui vous permettra de retrouver un auto loading compatible avec l’existant Symfony1 (MapFileClassLoader)
  • 28. ORM : Propel Ne nécessite pas de changement majeur, c’est le même Propel https://github.com/willdurand/PropelBundle
  • 29. Transformation plugin -> bundle L’arborescence cible la suivante (non exhaustif) : BundleName Command Controller Entity Form Resources Views Tests
  • 30. Command Exécution de tâche disponibles dans la console symfony2 Equivalent par exemple de lib/task dans vos plugins Portage assez peu complexe, porte principalement sur les entrées / sorties
  • 31. Controller Tous les contrôleurs sont regroupés dans un seul répertoire Dans Symfony1 ils se trouvent dans chaque module de votre plugin Comme vos contrôleurs ne contiennent pas plus de 5 lignes de code par action, la migration est simple (comme quoi une bonne pratique, ça peut servir)
  • 32. Entity C’est le lib/model de vos plugins actuel Pas d’autres changements à apporter mis à part la problématique de l’ORM…
  • 33. Form Le framework dédié présent dans les dernières versions de la branche 1 a été abandonné (qui n’a pas souffert sur les formulaires imbriqués ?) Symfony2 propose un nouveau framework dédié Pas vraiment de migration possible, c’est plus un travail de réécriture
  • 34. Views Twig préconisé dans Symfony2, mais PHP est aussi supporté Sauf que… Partial, Component, Slot => Include, Slot
  • 35. Helpers Conceptuellement, toujours présents Pratiquement, plutôt absents Mais ça ne représente que quelques lignes de code à chaque fois, migration assez simple
  • 36. Un petit détail Le routing Symfony2 En twig : <a href="{{ path("blog_archives" }}"> Archives </a>
  • 37. Admingenerator Hum…. On vous a dit qu’il fallait être patient ;)
  • 38. L’activation de votre bundle Quand vous vous êtes sorti des embuches précédentes Pour chaque bundle créé, vous indiquez la route correspondante dans Symfony2 et vous y êtes, Symfony2 a pris la main Au suivant, sauf que…
  • 39. Tout ne dépend pas toujours de vous Si votre projet dépend de plugins symfony1 faits par des tiers, vous risquez de ne pas avoir de mise à jour, ou d’avoir une refonte plutôt qu’une mise à jour Un exemple ? sfGuard and co
  • 40. Pour résumer Migration = Réécriture Heureusement, elle peut être progressive Dans la plupart des cas, vous pouvez utiliser les composants Symfony1 dans votre applicatif Symfony2 (pour les formulaires par exemple)
  • 41. Comment faire une transition ? Chaque cas est spécifique Nombre d’applications Maintenance et évolutions Possibilité de découper les applicatifs et de les isoler Environnement technique Roadmap
  • 42. On peut la préparer Utiliser les namespace Utiliser PHPUnit et abandonner lime pour les tests fonctionnels Utiliser le cache HTTP de Symfony2 Utiliser des composants de Symfony2 Bref, commencer à réécrire vos applications pour quitter petit à petit Symfony1
  • 43. Un truc Plus vos applications sont découplées Plus vous respectez les bonnes pratiques Plus facilement vous pourrez travailler pas à pas sur votre migration
  • 44. Mais n’oubliez pas Symfony1 fonctionne Symfony1 est rapide Symfony1 est maintenu Symfony2 n’est pas encore RC1
  • 45. Quid de symfony1 ? Ne changez rien ! Continuez à faire du symfony 1.x ! Commencez vos nouveaux projets en symfony2 si ceux-ci sont indépendants de l’existant 1.x
  • 46. Et on peut vous aider Sensiolabs propose : Une extension du support symfony1 Un accompagnement sur mesure sur votre chemin vers Symfony2 Formations Conseil Architecture Développement http://www.sensiolabs.com