$30 off During Our Annual Pro Sale. View Details »

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/

Grégoire Pineau

February 01, 2019
Tweet

More Decks by Grégoire Pineau

Other Decks in Programming

Transcript

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

    View Slide

  2. Grégoire Pineau
    Github / Twitter : @lyrixx
    Dev @jolicode
    @Symfony Core Contributor

    View Slide

  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

    View Slide

  4. Des composants

    View Slide

  5. View Slide

  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

    View Slide

  7. Exemple : le Finder

    View Slide

  8. Exemple : la Console

    View Slide

  9. Un Framework HTTP

    View Slide

  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
    ● …

    View Slide

  11. Le FrameworkBundle
    Il dépend entre autre de :
    ● symfony/dependency-injection
    ● symfony/event-dispatcher
    ● symfony/http-foundation
    ● symfony/http-kernel
    ● symfony/routing
    ● …

    View Slide

  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

    View Slide

  13. Le composant HttpFoundation
    Request
    $_GET
    $_POST
    $_FILES
    $_COOKIE
    $_SERVER
    session*()
    Response
    header(...)
    echo $body

    View Slide

  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

    View Slide

  15. Le composant EventDispatcher
    Security
    Utilisateur connecté /
    permissions
    Translation
    Configure la
    traduction
    Locale
    Configure la locale
    de l’app
    Request
    Router
    Cherche la route

    View Slide

  16. Un controller - Votre code métier

    View Slide

  17. Un controller (2)

    View Slide

  18. Un controller (3)

    View Slide

  19. Twig

    View Slide

  20. Twig
    ● Le moteur de template par défaut
    ● Facile
    ● Rapide
    ● Très extensible
    ● Gestion d'héritage de templates

    View Slide

  21. Twig - la syntaxe

    View Slide

  22. Twig - l’héritage

    View Slide

  23. Un controller (4)

    View Slide

  24. L'injection de dépendances

    View Slide

  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

    View Slide

  26. Sans injection de dépendance

    View Slide

  27. Avec injection de dépendance

    View Slide

  28. Le composant DependencyInjection
    Avec la configuration par défaut, vous n’avez rien à faire
    It just works ™

    View Slide

  29. Un controller (5)

    View Slide

  30. Début d’un nouveau projet

    View Slide

  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é

    View Slide

  32. Installation avec composer

    View Slide

  33. La console

    View Slide

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

    View Slide

  35. Flex & Les recipes

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  40. Symfony c’est aussi

    View Slide

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

    View Slide

  42. Un profiler natif

    View Slide

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

    View Slide

  44. Une documentation de qualité

    View Slide

  45. Une roadmap prédictible

    View Slide

  46. Une grande communauté

    View Slide

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

    View Slide

  48. Conclusion

    View Slide

  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.

    View Slide

  50. Démo ?

    View Slide

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

    View Slide