02 - Symfony : Installation et Initialisation d'un projet Symfony
Objectifs
- ✅ Créer un projet Symfony
- ✅ Utiliser la console de Symfony
- ✅ Versionner ton projet avec Git
Pré-requis
- 1
- 2
Savoir utiliser le gestionnaire de dépendances Composer
Quêtes liées
Introduction
Ça y est, après la phase de conception et de découverte de Symfony, tu vas enfin pouvoir commencer à entrer dans le code !
Pour commencer simplement, tu vas créer un projet vierge, le configurer et le versionner. Évidemment, c’est ce même projet qu’il faudra réutiliser à chaque nouvelle quête Symfony pour, qu’à la fin de ta formation, ton Wild Series soit finalisé !
User stories 📋
en tant que visiteur, je souhaite accéder à la page d'accueil
en tant que visiteur, je souhaite récupérer les données d'une série
en tant que visiteur, je souhaite récupérer la liste des séries
en tant que contributeur, je souhaite ajouter une série
In progress 🤸
Doing 🏗️
initialisation du projet Symfony
Done ✅
Sommaire
Installation et initialisation d'un projet Symfony
Tout d'abord, tu vas commencer par créer un nouveau projet Symfony
Avant toute chose, assure-toi que tu disposes bien de PHP 8.2 minimum, ainsi que de Composer, auquel cas tu trouveras un lien dans les ressources qui s'y réfère ou n'hésite pas à regarder tes anciennes quêtes PHP.
Si tout est bon, place-toi à l'endroit où tu souhaites réaliser cette quête dans ton arborescence de fichiers, comme par exemple :
cd ~/workspace/quetes/symfony
Evidemment, il faut que ces dossiers existent !
Installation de Symfony CLI
Si c’est la toute première fois que tu initialises un projet Symfony sur ce PC, il faut que tu récupères l’outil d’installation de Symfony et l’installes globalement. Cette opération te permettra ensuite d’utiliser la commande symfony dans ton terminal.
Tu trouveras différents onglets en fonction de ton OS (Linux, MacOS, Windows) en suivant le lien ci-dessous.
Download Symfony Framework and Components.
Enfin, vérifie que tu as correctement installé le client symfony en exécutant la commande suivante dans ton terminal :
symfony -v
Tu devrais avoir une sortie proche de cela dans ton terminal (le numéro de version et le nom des commandes peuvent être différents car Symfony CLI est activement développé et évolue rapidement)
Symfony CLI version 5.8.16 (c) 2021-2024 Fabien Potencier (2024-04-23T14:40:41Z - stable)
Symfony CLI helps developers manage projects, from local code to remote infrastructure
These are common commands used in various situations:
Work on a project locally
new Create a new Symfony project
server:start Run a local web server
server:stop Stop the local web server
security:check Check security issues in project dependencies
composer Runs Composer without memory limit
console Runs the Symfony Console (bin/console) for current project
php, pecl, pear, php-fpm, php-cgi, php-config, phpdbg, phpize Runs the named binary using the configured PHP version
Manage a project on Cloud
init Initialize a new project using templates
cloud:domains Get a list of all domains
cloud:branch Branch an environment
cloud:environments Get a list of environments
cloud:push Push code to an environment
cloud:ssh SSH to the current environment
cloud:projects Get a list of all active projects
cloud:tunnel:open Open SSH tunnels to an app's relationships
cloud:user:add Add a user to the project
cloud:variables List variables
Show all commands with symfony help,
Get help for a specific command with symfony help COMMAND.
Si la commande ne fonctionne pas, ferme ton terminal et rouvre-le puis lance la commande à nouveau. Si cela ne fonctionne toujours pas, reprends l’installation de l’outil d’installation de Symfony.
✨ Création d'un nouveau projet
Pour créer un nouveau projet, tu peux maintenant lancer la commande
symfony new --webapp wild-series --version=lts
Patiente quelques instants… Symfony CLI télécharge les librairies et configure un nouveau projet, qui aura ici pour nom "wild-series" et qui utilisera la dernière version stable du framework.
Remarques : L'option --webapp installe et configure un certain nombre de dépendances utiles (Twig, gestion des formulaires, de la base de données, des assets...) pour débuter un site web rapidement. Tu auras besoin de cette option la plupart du temps.
Aussi, l'option --version=lts permet de créer une application qui utilise la version Symfony LTS (Long Term Support). Tu peux omettre cette option ce qui installera la dernière version stable du framework mais dont certaines fonctionnalités sont susceptibles de changer. Consulte la roadmap de Symfony pour plus d'informations.
Note : Si tu souhaites créer un projet plus basique (microservice, API...) qui ne nécessiterait pas toutes ces dépendances, tu peux omettre l'option --webapp. Tu auras alors un projet quasiment vide avec le minimum vital pour Symfony, et tu devras installer manuellement les dépendances additionnelles.
Une fois ton projet initialisé, il faut lancer ton serveur HTTP pour pouvoir lire tes fichiers PHP / Symfony. Comme expliqué par Symfony, tu peux :
-
soit lancer le serveur PHP web local depuis le répertoire du projet Symfony via la commande :
shphp -S 127.0.0.1:8000 -t public/ -
soit utiliser le serveur de Symfony qui est préconisé pour le développement et que tu vas découvrir juste après.
En production, tu devras utiliser Apache ou Nginx et non plus lancer un serveur "à la main", comme ci-dessus.
Installation et Initialisation d'un projet Symfony.
🌐 Lancer le serveur web Symfony
Le framework Symfony vient avec tout un tas de commandes qui vont te simplifier la vie (tu auras le temps de les découvrir dans les quêtes suivantes). En utilisant ton terminal de commande comme tu le faisais jusqu'à présent pour jouer avec Git, PHP ou composer, tu vas pouvoir utiliser des directives propres à Symfony.
Par exemple, pour lancer le serveur durant la phase de développement, exécute la commande ci-dessous à la racine de ton projet (après t'y être déplacé cd wild-series 😉) :
symfony server:start
Par défaut, tu risques d'avoir un message d'erreur du type [WARNING] run "symfony.exe server:ca:install" first if you want to run the web server with TLS support, or use "--no- tls" to avoid this warning. Tu peux spécifier l'option --no-tls qui permet de désactiver le mode HTTPS ou installer un certificat comme recommandé dans ton terminal.
Il existe une option qui lance ton serveur en tâche de fond: -d. Cela te permet de réutiliser ton terminal directement après avoir lancé ton serveur:
symfony server:start -d
Pour ouvrir l'URL du serveur en cours dans ton navigateur (par ex localhost:8000), tu peux utiliser la commande
symfony open:local
Afin de pouvoir stopper ton serveur fonctionnant en mode détaché, une autre commande est à ta disposition:
symfony server:stop
Voici la page que tu devrais avoir (à un numéro de version près) :

📂 Structure d'un projet Symfony
Sans que tu t'en rendes compte, Symfony a fait pas mal de choses. Dans le dossier wild-series, tu trouveras un ensemble de fichiers et de dossiers qui constitue l'architecture de ton projet Symfony. On y trouve tous les outils nécessaires pour construire une plateforme sur des bases saines et solides. Jette un œil à la ressource ci-dessous pour connaître le rôle de ces dossiers.
L'architecture du framework expliquée par Symfony lui même !
🗄️ Versionner son projet avec Git
Il ne manque pas une étape dans notre installation ?
Eh si, il nous reste à versionner notre projet par le biais de Git !
Sache que lorsque tu installes un projet Symfony, celui-ci est déjà pensé pour Git. En effet, tu trouveras dans la plupart des dossiers des fichiers .gitignore qui excluront les fichiers à ne pas versionner. Tu peux éventuellement jeter un œil sur le .gitignore principal, à la racine de ton projet.
Symfony a déjà effectué un git init pour toi et ton projet contient un fichier de configuration .git/config par défaut. Il te faut alors simplement configurer ton dépôt distant (remote origin).
git remote add origin git@github.com:User/YourRepoName.git
Bien évidemment, remplace l'URL par celle de ton repository créé au préalable sur Github.
Ajouter un dépôt distant.
Tu peux ensuite effectuer ton premier commit :
git status
git branch -M main
git push -u origin main
Le git status ici te montre juste quels sont les fichiers qu'il faut absolument versionner.
Attention - si tu utilises un IDE - veille à ne pas versionner les fichiers de configuration de ce dernier. Par exemple, si tu utilises PhpStorm n'oublie pas d'ajouter .idea au fichier .gitignore qui se situe à la racine de ton projet. Et si tu es sous MacOS, ajoute aussi le fichier .DS_Store qui est très souvent généré automatiquement par le système.
Installer un projet Symfony existant
Attention, ce qui suit n'est valable que dans le cas où tu récupères un projet Symfony déjà initialisé. Ce n'est donc pas valable dans le cadre de TON projet Wild Series. En revanche, quand tu corrigeras le travail de tes pairs, tu devras récupérer leur dépôt. Il en sera de même lorsque tu commenceras le projet en groupe ou que tu rejoindras une équipe déjà en place dans ta future entreprise.
Quand tu récupères un projet existant, c'est le plus souvent en utilisant git clone.
Le dossier récupéré contient déjà toute l'infrastructure de dossiers de Symfony. Mais attention, il va te manquer un certain nombre de fichiers et de dossiers, notamment ceux ignorés dans le .gitignore.
Par exemple, le dossier vendor/ (généré par Composer), est ignoré. C'est sûrement le plus gros dossier du projet, car il contient les bibliothèques utilisées par l'application.
Pour récupérer ce dossier, tu devras donc lancer la commande suivante depuis la racine du projet :
cd wild-series/
composer install
Tu peux ensuite reprendre les étapes du dessus. Par la suite, tu auras éventuellement à personnaliser le fichier .env (en le dupliquant en .env.local) puisqu'il contient des données sensibles qui te sont propres (comme tes identifiants de base de données).
Récupérer un projet Symfony.
💪 Challenge
Initialisation du projet Wild Series 🍿
Le défi est simple :
Crée un nouveau projet Symfony Web pour ton Wild Series et push ton projet sur Github. Copie l’URL de ce dépôt git dans le champ solution.
Critères de validation
-
Le dépôt contient les dossiers suivants : bin/, config/, public/, src/, templates/, tests/, translations/ et quelques autres fichiers (.gitignore, composer.json, etc.).
-
Le dépôt ne contient pas de répertoires ou fichiers listés dans .gitignore, comme .idea/, .vscode/, .DS_Store et vendor/.
Attention : Ton repository Github doit être public pour que les correcteurs puissent y accéder.
Ressources partagées sur cette quête
- Pour les utilisateurs MAC qui voudrait remplacer le binary déprécié manuellement.https://stackoverflow.com/questions/27563544/cant-be-opened-because-the-identity-of-the-developer-cannot-be-confirmed
- Pour les utilisateurs MAC qui voudrait remplacer le binary déprécié manuellement.https://www.pcmag.com/how-to/how-to-access-your-macs-hidden-files#:~:text=View%20Hidden%20Files%20in%20Finder,%2C%20Applications%2C%20and%20Desktop%20folders.
- La version de Symfony CLI issue de l'installateur Symfony est déprécié (message d'erreur lors de la commande symfony -v), remplacer donc l'executable par la dernière version disponible (Binary AMD64 pour moi).https://symfony.com/download