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

Premiers pas avec Symfony au Breizhcamp 2014

Premiers pas avec Symfony au Breizhcamp 2014

Utilisé par de grandes entreprises, Symfony 2 est un outil de développement PHP fiable, pour réaliser des applications web robustes et évolutives.

Cette présentation de Symfony 2 qui associe théorie et exercices pratiques, vous permettra d’appréhender l'architecture du framework, de connaître les différents outils disponibles et ses principales fonctionnalités telles que l'architecture MVC, la création des formulaires, la sécurité, l'interfaçage avec une base de données et les services.

Sources associées : https://github.com/tonydub/breizhcamp-2014-hands-on-symfony

0f4819fe72ad8a826ea7772cbef348ec?s=128

Tony Dubreil

May 22, 2014
Tweet

Transcript

  1. Premiers pas avec Symfony Tony  Dubreil  −  Niji   22

     mai  2014  
  2. Speaker Tony  Dubreil   Architecte  logiciel  Web  chez  Niji  

      @tonydbrl       github.com/tonydub        
  3. Niji www.niji.fr     Des  compétences  pluridisciplinaires   pour  vous

     aider  à  prendre  le  virage   du  numérique     Exploiter  le  digital  comme  ouKl  de   travail     Appréhender  l’ensemble  des   territoires  numériques     3  
  4. Plan •  Introduc2on   •  Découvrir  Symfony  2   • 

    Mise  en  pra2que   •  Retours  d’expérience   •  Q&R  
  5. Framework : c’est quoi, pourquoi?

  6. Pourquoi utiliser un framework •  Plateforme  de  développement.   • 

    Gain  de  producKvité   •  Maintenabilité  à  long  terme   •  Apport  pédagogique  par  l’usage  des  bonnes  praKques  et  «  design   paQern  »   •  Travail  en  équipe  et  recrutement  facilité   •  Ne  pas  réinventer  la  roue   •  DocumentaKon   •  PermeQre  de  se  concentrer  sur  la  couche  méKer  
  7. 6 bonnes raisons de choisir Symfony hQp://symfony.com/six-­‐good-­‐reasons  

  8. Réputation

  9. Réputation

  10. Fonctionnalité complète •  Console  applicaKon   •  HTTP  applicaKon  (routage,

     contrôleur,  cache,  ESI)   •  Sécurité:  authenKficaKon  et  autorisaKon   •  GesKon  des  formulaires   •  ValidaKon  des  données   •  ConfiguraKon  avec  gesKon  du  cache  et  avec  mulK-­‐source  et  mulK-­‐format.   •  Persistance  de  données  en  base  de  données   •  GénéraKon  de  web  services  REST   •  InternaKonalisaKon  et  régionalisaKon   •  CréaKon  d’IHM  avec  un  moteur  de  template  lisible  flexible  et  extensible   •  Système  de  routage  pour  avoir  des  URLs  «  propres  »   •  Tests  unitaires  et  foncKonnels  
  11. Innovation •  Profiler,  Debug  Bar   •  SeparaKon  of  Concerns

      •  Découplage  et  flexibilité  (DIC,  Interfaces,  YAML,  PHP,  XML)   •  Bundles   •  Components   •  DistribuKons   •  Twig   •  AnnotaKons  (rouKng,  template,  cache,  security,  orm)  
  12. Ressources The  Book   •  hQp://symfony.com/doc/current/index.html   •  hQps://leanpub.com/a-­‐year-­‐with-­‐symfony  

      Reference  Documents   •  hQp://symfony.com/doc/current/reference/index.html     The  Components   •  hQp://symfony.com/doc/current/components/index.html    
  13. Interopérable Respectueux des standards et bonnes pratiques •  HTTP specification

    (RFC2616) •  Unit test (PHPUnit) •  Jinja Templates •  Spring Security •  Design Patterns •  http://semver.org/
  14. Support à long terme hQp://symfony.com/releases  

  15. Découvrir Symfony2

  16. None
  17. C’est quoi Symfony ? hQp://symfony.com/what-­‐is-­‐symfony  

  18. Composants PHP réutilisables indépendants et découplés Pour  des  besoins  techniques

     récurent  du  développement  Web.   Ce  sont  les  fonda2ons  du  framework  full-­‐stack,  mais  ils  peuvent  être   uKlisés  de  manière  autonome.  Ils  n’ont  pas  de  dépendances   obligatoires.    
  19. None
  20. Fonctionnalités disponibles •  HTTP   •  Persistance  des  données  dans

      une  base  de  données   •  Sécurité   •  Formulaires   •  ValidaKon   •  Moteur  de  template   •  Logging   •  RouKng   •  Rechercher  des  fichiers  ou   dossiers   •  TraducKon   •  InjecKon  de  dépendances   •  Tâche  en  console   •  Asset  Management   •  Debug  
  21. Source:  hQp://zalas.eu/symfony2-­‐adopKon/  

  22. Symfony 2 Yaml Voir  exemple  part  1  

  23. HTTP framework

  24. La philosophie de Symfony2 « Convertir une Requête entrante en

    une Réponse » d’une application web
  25. Symfony 2 Request Voir  exemple  part  2  

  26. Symfony 2 Response Voir  exemple  part  3  

  27. Transformer une requête en une réponse Voir  exemple  part  4

     :  un  simple  «  front  controller  »  
  28. Le Parcours de la Requête à la Réponse

  29. Routage HTTP Voir  exemple  part  5  

  30. Framework « full-stack » 2  tâches  :   •  Une

     sélecKon  de  composants  PHP   •  Fournir  une  architecture  configurable  avec  intégraKon  de  librairies  externes.  
  31. Console Framework

  32. None
  33. Architecture orientée services

  34. Conteneur de services hQp://symfony.com/fr/doc/current/book/service_container.html  

  35. Envie de l’essayer ?

  36. Ordre du jour •  Contrôleur   •  RouKng   • 

    TemplaKng   •  InjecKon  de  dépendance   •  Ligne  de  commande   •  Formulaires   •  ValidaKon   •  TraducKon   •  HTTP  cache   •  ORM  Doctrine   •  REST  
  37. Créer un projet Symfony2 Installer  la  distribu2on  standard  avec  composer

      composer  create-­‐project  symfony/framework-­‐standard-­‐ediKon   breizhcamp-­‐first-­‐symfony-­‐applicaKon  2.4.4   Configurer  son  serveur  Web   •  Serveur  Web  PHP     •  Apache  et  Nginx   Voir  exemple  part  6  
  38. L’édition « standard »

  39. None
  40. •  Composer   •  YAML   •  Twig   • 

    Route  :  différentes  syntaxes   étranges  et  magiques  pour   _controller  et  chemin  des   templates  des  bundless   •  Divers  fichiers  à  ouvrir  et  fouiller   dedans   •  Dependency  Injec2on   •  Event  dispatcher   •  Doctrine   Liste  des  noKons  de  hQp://www.whitewashing.de/2014/04/24/symfony_hello_world.html   Concepts  à  maîtriser  
  41. Ges2onnaire  de   dépendances  pour   PHP   hQps://getcomposer.org  

    composer install! DocumentaKon  offcielle  :  hQps:// getcomposer.org/doc/   Cheat  Sheet  :  hQp:// composer.json.jolicode.com/     IntroducKon  à  Composer  
  42. Autochargement des classes Les  standards  PSR0,  PSR4   hQp://www.php-­‐fig.org/psr/psr-­‐0/fr/  

    hQp://www.php-­‐fig.org/psr/psr-­‐4/fr/    
  43. Découvrir l’application demo

  44. Configuration de la base de données.

  45. Démarrage immédiat avec Symfony2.

  46. Un projet Symfony2 La  structure  recommandée  :   path/to/project/! app/!

    cache/! config/! logs/! src/! ...! vendor/! ...! web/! app.php! app_dev.php!                        ...  
  47. Routage et contrôleur

  48. Définition du routage •  Le  système  de  routage  détermine  quelle

     foncKon  PHP  qui  doit  être   appelé  en  se  basant  sur  les  informaKons  de  la  requête  et  sur  la   configuraKon  qui  a  été  créée.   •  Le  routage  peut  être  configuré  par  annotaKon  ou  au  format  YAML,   XML  ou  PHP.   •  Par  exemple  au  format  YAML  :         La  syntaxe  AcmeDemoBundle:Demo:hello  pointe  vers  la  méthode   spécifique  helloAc.on()  de  la  classe  contrôleur  DemoController.  
  49. Votre premier contrôleur Dans  Symfony2,  une  méthode  dans  un  contrôleur

     est  appelée  une   ac2on.  La  convenKon  est  de  suffixer  chaque  méthode  avec  ac2on.   De  plus,  chaque  classe  contrôleur  doit  être  suffixé  par  Controller.      
  50. Application Kernel Place  central  de  votre  applicaKon  :    

  51. Application Configuration •  Une  applicaKon  correspond  à  une  collecKon  de

     «  bundles  »  qui  représente   toutes  les  foncKonnalités  et  capacités  de  votre  applicaKon.   •  Chaque  bundle  peut  être  personnalisé  par  des  fichiers  de  configuraKon  au   format  YAML,  XML  ou  PHP.   •  Par  défaut,  le  fichier  principal  de  configuraKon  se  trouve  dans  le  répertoire   app/config/  et  appelé  config.yml,  config.xml  ou  config.php  selon  le  format   que  vous  préférez.   •  Avec  Symfony2  tout  est  configurable  et  vous  pouvez  faire  a  peu  près  ce   que  voulez.  C’est  quoi  des  gens  ont  convenu  de  certaines  convenKons,   mais  encore  une  fois,  une  convenKon  est  juste  une  manière  de  faire  les   choses,  pas  le  moyen    de  le  faire.  
  52. Mes conventions •  Le  fichier  principale  de  configuraKon  doit  être

     écrit  en  YAML.     •  La  définiKon  du  routage  doit  être  écrit  en  YAML.   •  La  configuraKon  du  conteneur  de  services  doit  être  écrit  en  XML.  
  53. Environnements •  Une  applicaKon  pour  exécuter  plusieurs  environnements.  Ces  

    différents  environnements  partage  le  même  code,  mais  uKlise   différente  configuraKon.   •  Un  projet  Symfony2  uKlise  en  général  3  environnements  :  dev,  test  et   prod.    
  54. C’est quoi un Bundle ? •  Un  Bundle  est  un

     répertoire  qui  conKent  des  fichiers  (PHP,   stylesheets,  JavaScripts,  images,  ...)  qui  implémente  une  seule   fonc2onnalité  (gesKon  des  uKlisateurs,  un  blog,  un  forum,   manipulaKon  des  images,  etc).   •  Ils  vous  donnent  la  flexibilité  d'uKliser  des  foncKonnalités  pré-­‐ construites  dans  des  bundles  Kers  ou  de  distribuer  vos  propres   bundles.     •  Pour  uKliser  un  Bundle  dans  votre  applicaKon,  il  est  nécessaire  de   l’enregistrer  dans  le  AppKernel  en  uKlisant  la  méthode   registerBundles().  
  55. Tout est « Bundle » ou presque hQp://symfony.com/fr/doc/current/book/page_creaKon.html#page-­‐ creaKon-­‐bundles  

  56. Où mettre vos classes dans un Bundle •  Commande  console

           =>      Command/   •  Contrôleur            =>            Controller/   •  Extensions  du  conteneur  de  servces  =>                  DependencyInjecKon/   •  Ecouteur  d'événements    =>                                  EventListener/   •  ConfiguraKon        =>                      Resources/config/   •  Ressources  Web        =>                                Resources/public/   •  Fichiers  de  traducKon      =>          Resources/translaKons/   •  Templates          =>                              Resources/views/   •  Tests  unitaires  et  foncKonnels    =>                                        Tests/  
  57. Bundles de la communauté hQp://knpbundles.com/  

  58. « Un Bundle est un répertoire qui contient une structure

    bien précise et qui héberge tous les fichiers d’une même fonctionnalité. »
  59. Composants Bibliothèques Core Bundles + Bridges Bundles de la distribution

    standard Bundles Métiers Bundles Tiers Configuration
  60. Un Bundle peut contenir •  Des  paramètres  de  configuraKon  pour

     le  routage,  les  services   •  Des  classes  contrôleurs     •  Des  fichiers  de  template  pour  la  vue   •  Des  classes  de  la  couche  modèle   •  Des  fichiers  CSS,  Javascripts  et  images.   •  La  documentaKon   •  Les  traducKons  
  61. Créer un Bundle •  Un  Bundle  hérite  de  la  classe

     Symfony\Component\H>pKernel \Bundle\Bundle:   •  Ensuite  vous  pouvez  l’enregistrer  :      
  62. Le répertoire Web Le  répertoire  web  racine  conKent  tous  les

     fichiers  accessible  par  le   serveur  HTTP  :   •  Images,   •  Stylesheets   •  Javascript   •  Front  controller   Un  Contrôleur  Frontal  (Front  Controller)  est  un  court  script  PHP  qui  se   trouve  dans  le  dossier  web  de  votre  projet.  Typiquement,  toute   requête  est  prise  en  charge  en  exécutant  le  même  contrôleur  frontal,   dont  le  rôle  est  de  démarrer  l'applicaKon  Symfony.  
  63. Résumé La  créaKon  d'une  page  est  un  processus  en  trois

     étapes  impliquant  une  route,  un   contrôleur,  et  (éventuellement)  une  template.   Chaque  projet  conKent  quelques  répertoires  principaux:     web/  (ressources  web  et  les  contrôleurs  frontaux)   app/  (configuraKon,  cache,  logs)   src/  (vos  Bundles)   et  vendor/  (code  Kers).   Chaque  foncKonnalité  dans  Symfony2  (y  compris  le  noyau  du  framework   Symfony2)  est  organisé  dans  un  Bundle,  qui  est  un  ensemble  structuré  de  fichiers   pour  ceQe  foncKon.   Chaque  environnement  est  accessible  via  un  contrôleur  frontal  différent  (par   exemple    app.php  et  app_dev.php)  et  des  charges  un  fichier  de  configuraKon   différent.      
  64. Templating

  65. Le moteur de template Twig Twig est un moteur de

    templating moderne §  Rapide §  Syntaxe concise et riche §  Echappement automatique §  Fonctionnalités modernes §  Extensible §  Flexible
  66. Simplifier le Débogage La  barre  de  débogage   Les  traces

     d’excepKon   JournalisaKon  interne   L’applicaKon  Profiler   Commande  router:debug   Commande  container:debug    
  67. La validation des données hQp://symfony.com/doc/current/reference/constraints.html    

  68. None
  69. Utiliser les formulaires hQp://symfony.com/doc/current/reference/forms/types.html    

  70. None
  71. Simplifier les interactions avec la BDD Avec  Doctrine  2  

  72. Simplifier le cache des pages ExpiraKon  &  ValidaKon  HTTP  

     
  73. Authentification Autorisation Utilisateurs et rôles

  74. Simplifier les tests fonctionnels

  75. Retours d’expérience

  76. Q & R

  77. N’oubliez pas le feedback en sortant ! ✔  ou  ✘

     ?