Symfony 4 - Touraine Tech 2019

Symfony 4 - Touraine Tech 2019

Symfony est un framework HTTP écrit en PHP. Dans sa version 4, Symfony tire
parti des bonnes pratiques web et propose une expérience pour les développeurs
unique en son genre.

Grâce à son écosystème riche, il permet de développer rapidement une
application, en se concentrant sur la partie métier sans faire de compromis sur
la qualité du code.

Cette conférence a pour but de vous faire découvrir pourquoi Symfony est unique
et pourquoi on aime développer avec ce framework.

https://touraine.tech/

7602f2751868682b296171f58589c851?s=128

Grégoire Pineau

February 01, 2019
Tweet

Transcript

  1. Symfony 4 Un framework PHP moderne pour travailler plus vite

    Touraine Tech 2019
  2. Grégoire Pineau Github / Twitter : @lyrixx Dev @jolicode @Symfony

    Core Contributor
  3. Symfony - Qu’est ce que c’est ? Symfony est un

    ensemble de composants… ... et un framework pour les projets web Pour vous aider à développer plus vite et mieux
  4. Des composants

  5. None
  6. Composer - Qu’est ce que c’est ? Le gestionnaire de

    dépendances de PHP C’est l’équivalent de yarn / pip / gem • composer install • composer update • composer require
  7. Exemple : le Finder

  8. Exemple : la Console

  9. Un Framework HTTP

  10. Les Bundles Un bundle permet de brancher un composant ou

    une librairie tierce dans le Framework • FrameworkBundle : Le coeur du Framework • TwigBundle : Le système de vue • MonologBundle : Le système de log • DoctrineBundle : La gestion de base de donnée • …
  11. Le FrameworkBundle Il dépend entre autre de : • symfony/dependency-injection

    • symfony/event-dispatcher • symfony/http-foundation • symfony/http-kernel • symfony/routing • …
  12. Le composant HttpKernel • Le cœur de Symfony • Il

    convertit une Request HTTP en une Response HTTP • Il utilise massivement l’EventDispatcher (découplage / extensibilité) • Il délègue le traitement à des Controllers (des callables PHP) Response Envoi la Réponse Request Reçoit une Request HttpKernel Exécute un Controller
  13. Le composant HttpFoundation Request $_GET $_POST $_FILES $_COOKIE $_SERVER session*()

    Response header(...) echo $body
  14. Le composant Routing Configuration routes[] = [uri => /foo, …]

    routes[] = [uri => /bar, …] routes[] = [ uri => /about, controller => Callable, ... ] Request uri = /about method = GET host = example.com Router::match($request) Trouve la route associée et retourne sa configuration
  15. Le composant EventDispatcher Security Utilisateur connecté / permissions Translation Configure

    la traduction Locale Configure la locale de l’app Request Router Cherche la route
  16. Un controller - Votre code métier

  17. Un controller (2)

  18. Un controller (3)

  19. Twig

  20. Twig • Le moteur de template par défaut • Facile

    • Rapide • Très extensible • Gestion d'héritage de templates
  21. Twig - la syntaxe

  22. Twig - l’héritage

  23. Un controller (4)

  24. L'injection de dépendances

  25. L'injection de dépendances L'injection de dépendances (dependency injection en anglais)

    est un mécanisme qui permet d'implémenter le principe de l'inversion de contrôle. Il consiste à créer dynamiquement (injecter) les dépendances entre les différents objets en s'appuyant sur une description ou de manière programmatique. Dans Symfony, ces objets sont appelés des services. https://fr.wikipedia.org/wiki/Injection_de_d%C3%A9pendances
  26. Sans injection de dépendance

  27. Avec injection de dépendance

  28. Le composant DependencyInjection Avec la configuration par défaut, vous n’avez

    rien à faire It just works ™
  29. Un controller (5)

  30. Début d’un nouveau projet

  31. Deux skeletons symfony/skeleton • La version minimaliste • Pour les

    fanboys (Personne ?) • Déconseillé symfony/website-skeleton • La version “full featured” • Embarque les composants les plus utiles Form / Validator / Serializer / … • Pour toutes personnes voulant dev un site • Recommandé
  32. Installation avec composer

  33. La console

  34. Test en local bin/console server:start est une commande qui lance

    un serveur web
  35. Flex & Les recipes

  36. Flex - Qu’est ce que c’est ? Plugin Composer Automatise

    l'installation / la suppression de package / bundle Avoir une configuration par défaut qui fonctionne immédiatement Optimise le téléchargement des packages
  37. Les recipes (recettes) décrivent comment un paquet s’installe / se

    configure Il y a des recipes officielles, validées par la core team : github.com/symfony/recipes Et les recipes contribuées par la communauté : github.com/symfony/recipes-contrib Flex utilise des recipes
  38. Définie une configuration par défaut • Bundle(s) à instancier •

    Fichiers (config, routing ou autre) à créer • Paramètres & services à ajouter dans le DIC • Entrées à ajouter dans .gitignore, .env, etc • Tâche(s) à lancer après l'installation • Une aide à afficher après l’installation Une recipe Flex
  39. Système d'alias : composer req admin va automatiquement télécharger et

    installer easycorp/easyadmin-bundle Les alias ne sont possibles qu’avec les recipes officielles. Système de "pack" : composer req orm va automatiquement installer : • doctrine/orm • doctrine/doctrine-bundle • doctrine/doctrine-migrations-bundle Les alias et les packs
  40. Symfony c’est aussi

  41. Des pages d’exception détaillée

  42. Un profiler natif

  43. Un MakerBundle pour accélérer le dev

  44. Une documentation de qualité

  45. Une roadmap prédictible

  46. Une grande communauté

  47. Des évènements (officiels ou non)

  48. Conclusion

  49. Conclusion Symfony est un framework HTTP (et CLI) écrit en

    PHP qui se veut moderne, rapide, robuste et outillé. Notre but est de rendre le framework facile à utiliser en vous laissant vous focaliser sur votre cœur de métier.
  50. Démo ?

  51. Merci - Des question ? Grégoire Pineau - @lyrixx