1 - L'architecture Symfony
1 - L'architecture Symfony
1 - L'architecture Symfony
Symfony
L’architecture de Symfony
! Considéré comme l’un des meilleurs frameworks PHP du marché, Symfony a été
développé par la société française SensioLabs !
! Symfony se distingue de la concurrence par la qualité qu’il offre, tant en terme de sécurité
web que de performance
L’architecture de Symfony
! Pour ne pas avoir à réécrire toujours les mêmes fonctionnalités, l’entreprise a développé
cet outil pour satisfaire ses propres besoins avant de le partager à la communauté PHP et
de le renommer Symfony
! De base, Symfony propose 50 composants autonomes à mettre en place dans des sites et
applications web
! Il permet donc d’accélérer leur création et leur maintenance tout en évitant de répéter du
code en permettant de garder un contrôle sur ce dernier
! Symfony dispose d’une large communauté avec plus 600 000 développeurs dans plus de
120 pays pour faire évoluer PHP et répondre à vos questions
L’architecture de Symfony
! Si vous n’avez pas une version de PHP >= 7.2.5 installée sur votre machine, téléchargez et
installez la dernière version disponible de PHP
! La commande php -v permet de connaître la version de PHP installée sur votre ordinateur
! Une fois une version PHP >= 7.2.5 installée sur votre machine, installez Composer en suivant
les instructions dispensées sur le site officiel
! Il nous permettra d’installer les différents composants dont notre projet aura besoin
! Cette installation est optionnelle mais va nous permettre d’avoir accès à tous les outils
Symfony permettant le développement et l’exécution d’applications en local
! Une fois les pré-requis installés, saisissez la commande symfony check:requirements pour
vérifier si toutes vos installations se sont bien passées
L’architecture de Symfony
! Pour créer un nouveau projet Symfony, il suffit de lancer la commande symfony new
nom_du_projet dans le répertoire de votre choix
! Pour cela, on saisit simplement cette commande dans le répertoire du projet : symfony
server:start ou symfony serve
! Pour arrêter le serveur, il suffit de stopper la commande lancée depuis le terminal via le
raccourci Ctrl+C
! Si tout s’est bien passé, cet écran d’accueil apparaît à l’adresse http://localhost:8000 ou
http://127.0.0.1:8000
L’architecture de Symfony
! Durant le développement d’une application web Symfony, il est commun de devoir installer
des paquets (dépendances)
! Ils fournissent des fonctionnalités prêtes à l’emploi et nécessitent généralement une certaine
configuration pour pouvoir les utiliser
! Bien heureusement, cette configuration peut être automatisée grâce à l’outil Symfony Flex
simplifiant l’installation et la suppression de paquets
! Il s’agit d’une extension Composer, installée par défaut lors de la création d’une application
Symfony, automatisant les tâches les plus courantes du framework
! Pour installer un paquet, il suffit de saisir la commande composer require nom-du-paquet dans le
répertoire de votre projet Symfony (Exemple : composer require logger)
! Cette commande installe et active tous les paquets nécessaires à l’utilisation du paquet spécifié
! Cette pratique est rendue possible grâce au fait que de nombreux paquets Symfony définissent des
recettes décrivant un ensemble d’instructions automatisées pour installer et activer plusieurs paquets
! Par ailleurs, Flex garde la trace des recettes des paquets installés dans un fichier symfony.lock à la
racine d’un projet Symfony
! Les dépendances installées dans un projet Symfony apparaissent dans les sections require et require-
dev du fichier composer.json, situé à la racine
! Plutôt que de les installer individuellement, Symfony fournit des méta-paquets Composer
comprenant plusieurs dépendances
! En réalité, cette commande installe le paquet symfony/debug qui installe à son tour
plusieurs autres dépendances : symfony/debug-bundle, symfony/monolog-bundle,
symfony/var-dumper, etc.
! Pour cela, il suffit de saisir la commande symfony check:security au sein de votre projet
! Une bonne pratique de sécurité consiste à exécuter cette commande régulièrement afin
de mettre à jour ou remplacer les dépendances compromises au plus vite
! Dans ce projet, il n’y a aucune vulnérabilité connue parmi les paquets installés
L’architecture de Symfony
! Ouvrez le dossier ainsi créé dans votre éditeur de texte favoris (Visual Studio Code, Atom, etc.)
! Vérifiez la vulnérabilité des paquets installés => Interprétez la sortie rendue par la console
! Dans quel fichier s’affiche la liste des dépendances de votre projet Symfony ?
! Les réponses à ces 2 questions doivent apparaître dans un nouveau fichier questions.md
situé à la racine du projet - Voici un guide indiquant comment écrire un fichier Markdown
! Supprimez le dossier vendor de votre projet (il contient les dépendances installées ; il est
donc très volumineux) avant d'envoyer votre dossier compressé au format ZIP à
chevalier@chris-freelance.com
L’architecture de Symfony
! Construire un contrôleur (une fonction PHP) - Il utilise les informations envoyées dans la
requête HTTP pour créer un objet Symfony de type Response contenant du code HTML,
JSON ou encore un fichier
! Définir une route - il s’agit de l’URL de la page qui pointe vers le contrôleur (Exemple : /
about)
! Voici un exemple de contrôleur Symfony renvoyant un nombre aléatoire compris entre 0 et 100
au format HTML
! Pour associer cette méthode de contrôleur à un route (ici, lucky/number) et que celle-ci
soit appelée quand l’utilisateur atteint cette URL, il suffit de définir une route dans le fichier
config/routes.yaml
! Créez un nouveau projet Symfony « my-first-project » et suivez les étapes décrites précédemment
pour créer une nouvelle page affichant un nombre aléatoire à chaque actualisation
! Dans le dossier src/Controller du projet, créez une classe LuckyController contenant la méthode
number() renvoyant un nombre aléatoire choisi entre 0 et 100
! Configurez le fichier config/routes.yaml pour faire pointer l’URL /lucky/number sur le contrôleur
créé à l’étape précédente
! Pour ne pas avoir à définir vos routes en permanence dans le fichier config/routes.yaml,
Symfony propose d’utiliser des annotations grâce au bien nommé paquet annotations
! Un projet Symfony tel que le notre possède déjà un puissant outil pour débogguer une
application
! En saisissant cette commande au sein d’un projet Symfony, une liste de commandes
apparaît
! Dans notre cas, il peut être intéressant de faire apparaître la liste de toutes les routes
disponibles dans votre application avec la commande php bin/console debug:router
Chris Chevalier - chevalier@chris-freelance.com 32
Débogguer avec Symfony (2/3)
! Pour débogguer une application, Symfony propose également une barre d’outils disposant
d’un certain nombre d’informations - Elle est disponible en bas de votre page de
développement
! Elle permet, entre autres, d’obtenir des informations sur le routage, les performances et les
logs
! Twig est un langage de template pour PHP utilisé par défaut par Symfony
! En mettant à jour notre contrôleur number() situé dans la classe LuckyController, nous
pouvons retourner une réponse associée à un fichier Twig
! Les doubles accolades représentent la syntaxe utilisée pour afficher des variables Twig =>
{{ maVariable }}
! Suivez les étapes décrites précédemment pour recréer la page affichant un nombre
aléatoire à chaque actualisation en utilisant un template Twig :
! Installez le paquet twig
! Mettez à jour la classe LuckyController afin de lui faire hériter du bundle
AbstractController et renvoyer le fichier Twig templates/lucky/number.html.twig en
réponse avec le nombre aléatoire stocké dans la variable $number
! Créez et rédigez le fichier templates/lucky/number.html.twig affichant un message
« Votre nombre fétiche est le <votre-nombre> »
L’architecture de Symfony
! À ce stade du cours, nous avons déjà travaillé avec les répertoires les plus importants d’un
projet Symfony
! C’est dans le dossier config que l’on peut configurer les routes, services et paquets utilisés
! Les fichiers de cache et de logs, créés automatiquement, sont stockés dans le répertoire var
! Les bibliothèques tierces (dépendances) téléchargées par Composer sont installées dans le
dossier vendor
! Comme pour Twig, l’installation de certains paquets crée des dossiers automatiquement
L’architecture de Symfony
! Utilisez les annotations de route pour faire pointer le contrôleur sur la route racine de votre
application (/) - Nommez cette route « welcome »
! Faites apparaître les différentes routes disponibles pour votre application depuis un
terminal à l’aide d’une commande (Cf. diapo 32)
! Copiez-les manuellement pour les afficher sous la forme d’une liste HTML non ordonnée
(<ul>) dans votre modèle Twig
! Dans quel dossier d’un projet Symfony se trouvent les dépendances installées ?
! Quel dossier est créé automatiquement par la commande composer require twig ?
! Les réponses à ces 2 questions doivent apparaître dans un nouveau fichier READEME.md
situé à la racine du projet
! Envoyez votre dossier de projet (vendor exclus) compressé au format ZIP à chevalier@chris-
freelance.com