Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Bientôt 2012 : Quel framework PHP choisir pour ...

Xavier Lacot
December 20, 2011

Bientôt 2012 : Quel framework PHP choisir pour une refonte ou un nouveau projet ?

Slides présentés au groupe de meetup "PHP Paris", au sujet du difficile choix d'un framework de développement PHP en cette fin d'année 2011...

Xavier Lacot

December 20, 2011
Tweet

More Decks by Xavier Lacot

Other Decks in Technology

Transcript

  1. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot – 20 Décembre 2011
  2. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 2 Qui suis-je ? Xavier Lacot ▪ Clever Age ▪ Dirige le centre d'expertise ▪ Leader technique du pôle PHP ▪ Contributeur à plusieurs projets Open Source ▪ Notamment Symfony ▪ Expert frameworks Web ▪ Vice Président de l'Association Française des Utilisateurs de PHP (afup.org) ▪ http://twitter.com/xavierlacot
  3. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 3 Qu'est-ce que l'AFUP ? L'AFUP, ▪ 11 ans d'engagement... ▪ Le “Forum PHP”, à Paris ; ▪ Le “PHP Tour”, itinérant ; ▪ Les rendez-vous AFUP ; ▪ Le livre blanc ; ▪ Mailing-list, annuaire ; ▪ Le soutien aux antennes locales ; ▪ Lien avec les écoles ; ▪ Promotion de PHP au sens large...
  4. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 4 L'AFUP Adhérez à l'association, parlez-en autour de vous ! afup.org @afup
  5. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 5 Sommaire ▪ PHP “pré-frameworks” ▪ L'intérêt d'un framework ▪ Critères de choix ▪ Une génération de frameworks “éprouvés” ▪ Pourquoi de nouvelles versions des frameworks ? ▪ Les frameworks “nouvelle génération” ▪ Quel framework employer ? ▪ peut-on vraiment parler de "nouvelle génération" ? ▪ quelle est la pérennité des "anciens" frameworks (sf1, zf1) ? ▪ Et si on développait à nouveau “sans framework” ?
  6. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 6 « PHP is just a stupid tool » « PHP is not cool, this is what you do with it which is cool » Rasmus Lerdorf, Forum PHP 2010
  7. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 7 La vie d'un développeur (Web) ▪ Les projets Web couvrent un large panel ▪ Gestion de contenus ▪ Réseaux sociaux ▪ Gestion de la relation client (CRM) ▪ Communication ▪ Solutions collaboratives ▪ Partage de fichiers ▪ Applications métiers spécifiques ▪ Dans chaque projet (Web), un développeur va s'arracher les cheveux
  8. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 8 La vie d'un développeur (Web) Écarts de niveaux de complexité ▪ 5 jours d'intégration html pour quelques pages Web ▪ … + de 1000 jours de développement en utilisant un framework pour construire un plateforme social « web 2.0 » ▪ Très souvent, la « bonne » solution n'existe pas
  9. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 9 La vie d'un développeur (Web) Le développeur Web a le choix entre plusieurs types de produits : ▪ Frameworks ▪ Solution intégrée open source ▪ Solution intégrée propriétaire (mauvais) ▪ Framework propriétaire (très mauvais)
  10. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 10 Solution intégrées ▪ Qu'est ce que je qualifie de « solution intégrée » ? ▪ CMS, forums, outils de CRM, blogs, galerie photo, etc. ▪ Construit comme une solution facilement utilisable plutôt qu'une plateforme de développement ▪ Principalement utilisable comme archive compressée, puis capable de se mettre à jour en toute autonomie ▪ Non basée sur un framework
  11. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 11 Frameworks ▪ ...et de « frameworks » ? ▪ Non «orienté fonctionnalité » ▪ Conçu comme une plateforme de développement ▪ DIY – do it yourself (“fais-le toi-même”) ▪ Pas d'« effet waouw »
  12. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 12 Critères de choix ▪ Plusieurs considérations : ▪ Complexité du projet (charge de travail, fonctionnalité, scalabilité) ▪ Méthodologie de développement ▪ Y a-t-il beaucoup de personnalisation ? ▪ Nouvelle fonctionnalités ▪ Suppression de fonctionnalités ▪ Est-ce que des plugins/extensions existent, couvrent-ils tous les besoins ?
  13. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 13 « Avec un framework on adapte l'outil aux besoins du client, alors qu'avec une solution intégrée on adapte les besoins du client à l'outil »
  14. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 14 Règles d'or du développement Web ▪ Aller à la simplicité – ne pas surcharger d'options inutiles ▪ Les back-office doivent-être simples à utiliser ▪ Éditeur WYSIWYG ▪ Widgets adaptés ▪ Suivre les standards – « never hack up » ▪ Documentation ! ▪ Ouvrir le développement : rechercher des contributeurs ▪ Release early, release often ▪ Continuous integration
  15. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 15 Pourquoi employer un framework ? ▪ Des objectifs généraux : ▪ Accélérer les développements ▪ Simplifier les mises à jour et les évolutions ▪ Améliorer les performances (attention) ▪ Favoriser l'internationalisation ▪ Améliorer la qualité ▪ Industrialiser la production ▪ Ne plus « ré-inventer la roue » ▪ Profiter du travail des autres
  16. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 16 Comment évaluer un framework ? ▪ Question pas évidente... Il y a n réponses... ▪ Ne lisez pas l'avis des autres, faites-vous le votre (essayez !). ▪ À prendre en compte : ▪ Modèle de conception ▪ Outillage (CLI, journaux, scaffolding, tests) ▪ Risques pour le client ▪ Performances (applicative + de développement) ▪ Respect des standards / intégration briques externes ▪ Sécurité, Extensibilité, i18n, etc.
  17. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 17 Ce qu'on attend d'un framework Abstraction et Persistance des données Multi SGBD CRUD, Génération de code et d'interfaces Validation des formulaires Sécurité, authentification, autorisations Gestion des urls (routage) Langage de templates Nombreux helpers AJAX Cache paramétrable et performant Gestion des évolutions du modèle Ecosystème de plugins Gestion de l'internationalisation (i18n) IDE Réutilisation d'outils existants et reconnus Documentation exhaustive Support et maintenance Automatisation de tâches Tests unitaires et fonctionnels Chargement de données de test Licence souple d'utilisation Web Services REST, SOAP Montée en compétence rapide
  18. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 18 closed-source Sauf des cas très particuliers (pas le votre), refusez toujours les frameworks de développement closed source. Sinon, on se voit après la conférence et vous me faites un chèque en blanc ?
  19. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 19 Abstraction et persistance des données ▪ PHP « à l'ancienne » : mélange de PHP et de code SQL ▪ PHP « aujourd'hui » : utilisation d'outils d'abstraction de l'accès aux données : ▪ Abstraction (ORM) : Relation Objet ↔ Relationnel ▪ Persistance (DBAL) : abstraction de la base de données ▪ Le principe : des classes représentent les tables de la base de données et les entrées qu'elles contiennent table Post id integer(11) title varchar(100) body longtext category_id integer(11) author varchar(30) is_enabled integer(1) created_at timestamp class Post extends BasePost { } $post = new Post(); $post->setTitle('Ceci est un message'); $post->setBody('Corps du post'); $post->setCategoryId(12); $post->setAuthor('Michel'); $post->setIsEnabled(true); $post->save();
  20. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 20 Sommaire ▪ PHP “pré-frameworks” ▪ L'intérêt d'un framework ▪ Critères de choix ▪ Une génération de frameworks “éprouvés” ▪ Pourquoi de nouvelles versions des frameworks ? ▪ Les frameworks “nouvelle génération” ▪ Quel framework employer ? ▪ peut-on vraiment parler de "nouvelle génération" ? ▪ quelle est la pérennité des "anciens" frameworks (sf1, zf1) ? ▪ Et si on développait à nouveau “sans framework” ?
  21. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 21 Plusieurs générations de frameworks ▪ Le passé : des librairies ▪ Request ▪ Execution ▪ Response ▪ Les frameworks “première génération” : RAD / MVC ▪ Symfony, Zend Framework, CakePHP, Code Igniter, Yii... ▪ Le futur ▪ Plus découplé ▪ Distribué ▪ Alternatives : cloud / natif PHP / évènementiel request response exécution
  22. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 22 Le passé des frameworks ▪ Peu de frameworks jusqu'en 2005 (RoR) ▪ PEAR ▪ Débuté en 1999 ▪ Collection de bibliothèques de haute qualité (à l'époque) pour promouvoir la réutilisabilité en PHP ▪ Encore actif ▪ Smarty ▪ Moteur de template, 1.0 en 2004 ▪ Encore actif (ne l'utilisez plus !)
  23. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 23 Puis vinrent les frameworks... ▪ Frameworks MVC ▪ Zend Framework ▪ Code Igniter ▪ Seagull PHP ▪ Cake PHP ▪ Symfony ▪ Jelix ▪ Pluf ▪ Yii ▪ etc.
  24. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 24 Zend Framework ▪ Version 1.11.11 (version 1.0 en 2007) ▪ Bibliothèque de composants accompagnée d'une brique MVC ▪ Soutenu par la société Zend ▪ De nombreux IDE et bundles aident à son développement ▪ Documentation très complète ▪ Composants à jour sur les APIs les plus connues (Google, Amazon, Flickr)
  25. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 25 symfony ▪ Version stable 1.4 (version 1.0 en 2007) ▪ Framework « Full stack » MVC ▪ Soutenu par la société Sensio ▪ Documentation orientée sous forme de livres ▪ La star : le « Jobeet », génial pour apprendre le framework ▪ Symfony2 en route... (stable sortie en septembre 2011)
  26. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 26 CakePHP ▪ Version actuelle 1.3.13 (version 1.0 en 2006) ▪ Compatible PHP4 ▪ Implémentation fidèle de Ruby on Rails en PHP ▪ Quelques critiques : ▪ Contrôleurs dans une même arborescence ▪ PHP4 WTF ???
  27. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 27 Jelix ▪ Version 1.3.1 (version 1.0 en 2008) ▪ Développement communautaire ▪ Projet français (cocorico) ▪ Documentation complète ▪ Système d'installation et de mise à jour de modules ▪ Projet présenté par Laurent Jouanneau et Olivier Demah
  28. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 28 Et aujourd'hui ? ▪ Fin du 1er cycle de vie des frameworks ▪ Aujourd'hui : ▪ Zend framework 2 ▪ Symfony2 ▪ CakePHP 2 ▪ Silex ▪ Nouvelles tendances architecturales ▪ Injection de dépendance ▪ Utilisation des namespaces PHP 5.3 ▪ Retrait de singletons ▪ Plus légers
  29. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 29 Les limites des frameworks “première génération” ▪ Des performances parfois limitées ▪ Argument à tempérer... Qui dans la salle a monté Facebook ? ▪ Sites aux fonctionnalités de plus en plus riches ▪ Solution actuelle : multiplication des machines ▪ Solutions envisageables... ▪ Micro-kernels gérant les opérations liées au cache ▪ Revue des processus d'auto-loading ▪ Compilation (hiphop-php) ▪ Fonctionnement distribué (cloud / messages par Queue / etc.) ▪ Meilleure intégration d'autres bases de données que RDB classiques
  30. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 30 Les limites des frameworks “première génération” ▪ Des modèles de conception parfois “lourds” ▪ Singletons portant les classes importantes du framework ▪ Difficulté à industrialiser / tester ▪ Collisions de noms de classes, extensibilité limitée ▪ Stacks complètes ▪ Modularité ? ▪ Employer une classe d'un framework souvent impossible sans le reste...
  31. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 31 Sommaire ▪ PHP “pré-frameworks” ▪ L'intérêt d'un framework ▪ Critères de choix ▪ Une génération de frameworks “éprouvés” ▪ Pourquoi de nouvelles versions des frameworks ? ▪ Les frameworks “nouvelle génération” ▪ Quel framework employer ? ▪ peut-on vraiment parler de "nouvelle génération" ? ▪ quelle est la pérennité des "anciens" frameworks (sf1, zf1) ? ▪ Et si on développait à nouveau “sans framework” ?
  32. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 32 Une nouvelle génération de frameworks ▪ De gros gains avec PHP 5.3 : ▪ Meilleures performances ▪ Gestion des namespaces ▪ Late static binding (static) ▪ Fonctions anonymes ▪ Archives Phar <?php use My\Full\Classname as Another; use My\Full\NSname; $obj = new Another; // instantiates object of class My\Full\Classname $obj = new \Another; // instantiates object of class Another
  33. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 33 Une nouvelle génération de frameworks ▪ Nécessité de refondre les frameworks existants pour tirer partie de ces nouvelles fonctionnalités ▪ Autoloading ▪ Adressage des classes ▪ Problématiques de performance ▪ Publication de code / modularité ▪ Création de composants indépendants
  34. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 34 Les frameworks “nouvelle génération” ▪ Symfony2 ▪ CakePHP 2 ▪ Zend Framework 2 ▪ Fuel PHP ▪ Silex ▪ Et des discussions : PHP Framework Interop Group ▪ Définir des conventions entre frameworks ▪ https://github.com/php-fig
  35. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 35 Symfony2 ▪ Censé être plus rapide ▪ Un nouveau debugger ▪ DIC : Dependancy Injection Container ▪ Emploi des namespaces ▪ Ne marchera pas sur votre vieux PHP 5.2 ▪ Symfony2 components ▪ ClassLoader
  36. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 36 Symfony2
  37. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 37 Silex ▪ Un micro-framework “simple” ▪ Disponible sous forme d'archive phar ▪ Permet de construire des applications contenues en un seul fichier ▪ Peu de services inclus ▪ I18n ▪ Session ▪ Log ▪ Doctrine ▪ Swift ▪ Twig ▪ HTTP cache
  38. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 38 Silex require_once __DIR__.'/silex.phar'; $app = new Silex\Application(); $app->get('/hello/{name}', function($name) use($app) { return 'Hello '.$app->escape($name); }); $app->run();
  39. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 39 Les autres frameworks... ▪ Akelos ▪ Cake ▪ Code Igniter ▪ Fuel ▪ Kohana ▪ Lithium ▪ Yii ▪ Zend Framework 2 Une grande quantité d'efforts dupliqués }
  40. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 40 PSR-0 ▪ Un accord de standardisation de l'organisation des frameworks ▪ Poussé par le PHP Framework Interop Group class: Symfony\Component\HttpFoundation\Request path: vendor/src/Symfony/Component/HttpFoundation/Request.php class: Twig_Extension_Core path: vendor/twig/lib/Twig/Extension/Core.php
  41. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 41 PSR-0 ▪ PSR-0 c'est génial : ▪ Possibilité d'utiliser des classes provenant de plusieurs frameworks dans un même projet ! ▪ De manière transparente ▪ Standardisation des mécanismes d'autoloading ▪ Facilite la réutilisation de code ▪ Arrêter avec l'écriture de nouveaux frameworks inutiles !
  42. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 42 Sommaire ▪ PHP “pré-frameworks” ▪ L'intérêt d'un framework ▪ Critères de choix ▪ Une génération de frameworks “éprouvés” ▪ Pourquoi de nouvelles versions des frameworks ? ▪ Les frameworks “nouvelle génération” ▪ Quel framework employer ? ▪ peut-on vraiment parler de "nouvelle génération" ? ▪ quelle est la pérennité des "anciens" frameworks (sf1, zf1) ? ▪ Et si on développait à nouveau “sans framework” ?
  43. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 43 Quel framework employer ? ▪ Quelques considérations : ▪ Symfony2 / Zend framework 2 : très bien ▪ Silex : super ▪ Symfony 1, zend framework 1 : génial ▪ Ne pas abandonner les “vieux” frameworks ▪ Plein de projets en production ▪ De nouveaux plugins continuent à sortir ▪ Plus simples sur beaucoup de points !
  44. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 44 Ce qui change réellement ▪ Plus de complexité ▪ Namespaces ▪ DIC ▪ Moins de “rodage” ▪ Contributions OSS souvent plus instables ▪ Sur 750 bundles Symfony2... 20 stables et utiles ? ▪ Mais un avenir plus certain ▪ Moteurs pour l'écosystème PHP ▪ De très nombreux contributeurs ▪ Utilise (enfin) les nouveautés de PHP 5.3
  45. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 45 Frameworks “première version” ▪ Frameworks de première génération ▪ Éprouvés ▪ Quelques bugs, mais connus ▪ Simples et rapides à prendre en main (en 3j on a tout vu) ▪ Parfois limités en performances ▪ Avenir limité (possibilité de forks ?) ▪ En résumé : ▪ Très bien pour des applications qui doivent absolument tourner, sans besoin d'ingénierie particulière
  46. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 46 La pérennité des frameworks “première version” ▪ Symfony 1.4 : maintenu jusqu'en décembre 2012 ▪ Actuellement très peu d'améliorations... ▪ Plein de tickets à traiter dans le Trac du projet ▪ Compatible PHP 5.3 et 5.4 ▪ Ne tombera pas en panne... ! ▪ Zend Framework ▪ Situation similaire ▪ Besoins communautaires plus importants encore (Magento) ▪ Ne cessera pas de fonctionner... ;-)
  47. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 47 Frameworks de nouvelle génération ▪ Frameworks “sauce 2011 / 2012” ▪ Plus modernes ▪ Concepts plus réfléchis ▪ Beaucoup plus de code ▪ Courbe d'apprentissage rude ▪ Vélocité de dévelloppement moindre... au début ▪ Pérennité sur le long terme ▪ En résumé : ▪ Plus complexes, ▪ Plus buggés ▪ Mieux réalisés et avec un meilleur avenir
  48. Bientôt 2012 : Quel framework PHP choisir pour une refonte

    ou un nouveau projet ? Xavier Lacot | 20 Décembre 2011 48 En conclusion... ▪ Utilisez un framework “première génération” si : ▪ Votre projet doit sortir en peu de temps ▪ Vous n'avez pas d'équipe interne “à former” ▪ Vous ne voulez pas tomber sur des bugs parfois mystérieux ▪ Votre application n'est pas le fondement de votre business sur les 10 prochaines années ▪ Utilisez un framework “nouvelle génération” si : ▪ Les bugs ne vous font pas peur ▪ Vous voulez absolument investir sur l'avenir ▪ Aucun plugin existant ne fait déjà le boulot pour vous ▪ Vos deadlines sont confortables