• 20 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 13/11/2023

Installez Symfony 5

Installez le framework Symfony

Ensuite, regardons ensemble comment installer Composer et le framework Symfony.

Installation de Composer

Nous allons installer Composer sur notre ordinateur. Nous pouvons l'installer de la même façon, quel que soit notre système d'exploitation, dès lors que PHP est installé :

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '93b54496392c062774670ac18b134c3b3a95e5a5e5c8f1a9f115f203b75bf9a129d5daa8ba6a13e2cc8a1da0806388a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

Ensuite, vérifiez rapidement que PHP et Composer sont bien disponibles dans votre invite de commande :

➜ php -v
➜ composer --version

Ces deux commandes doivent retourner un résultat.

Installation du framework Symfony

Depuis la version 4 du framework Symfony, il n'y a plus vraiment de distribution officielle.

La vision de l'équipe qui maintient le projet, c'est de fournir des squelettes applicatifs légers, et de laisser la responsabilité aux développeurs de décider quelles dépendances sont nécessaires dans leurs applications.

Officiellement, il existe deux squelettes applicatifs :

  • skeleton: le squelette minimaliste pour démarrer un projet PHP, il est recommandé pour des applications en ligne de commande, par exemple.

  • website-skeleton : le squelette recommandé pour faire des projets web, que je vous recommande comme base de travail.

Il existe un projet de démonstration appelé Symfony Demonstration. Dans ce projet, vous trouverez quelques contrôleurs, quelques vues intégrées avec Bootstrap, quelques formulaires et un espace d'administration minimaliste déjà mis en place.

Pour installer ces squelettes, l'option recommandée est d'utiliser un logiciel appelé Symfony CLI.

Symfony CLI

Disponible sur Windows, GNU/Linux et Mac OS X, ce logiciel fournit trois fonctionnalités :

  • La création d'applications Symfony à partir des squelettes applicatifs ;

  • Un serveur local pour exécuter votre projet sur votre poste ;

  • Un outil pour vérifier les problèmes de sécurité (que l'on abordera dans le chapitre "Qu'est-ce qu'un code de qualité ?")

L'installation du squelette "Website Skeleton" se fait à l'aide de Symfony CLI :

 ➜ symfony new --full mon-super-projet

Ce logiciel utilise Composer pour télécharger les sources du projet, voici comment vous pourriez obtenir le même résultat sans le logiciel Symfony CLI :

➜ composer create-project symfony/website-skeleton mon-super-projet

Démarrage de l'application

Si en production on utilise un serveur web comme Apache ou Nginx, en développement, nous pouvons utiliser le serveur local de PHP. Pour cela, le framework fournit une console dédiée :

 ➜ cd mon-super-projet
 ➜ symfony server:start

Si le port n'est pas occupé, l'application sera alors disponible à cette adresse :  http://localhost:8000/ . Pour stopper ce serveur local, utilisez la commande  Ctrl + C  dans votre invite de commande.

Page d'accueil du framework Symfony
Page d'accueil du framework Symfony

Par défaut, puisque vous n'avez aucun contrôleur ni aucune route configurée, le framework vous présente une page avec un lien vers la documentation officielle.

Structure du framework Symfony

Lors de ce cours, nous allons parcourir l'essentiel de l'architecture d'une application Symfony, il est important d'avoir une vision d'ensemble du framework et une explication de chaque dossier :

➜ mon-super-projet: tree -L 1
.
├── bin/
├── composer.json
├── composer.lock
├── config/
├── phpunit.xml.dist
├── migrations/
├── public/
├── src/
├── symfony.lock
├── templates/
├── tests/
├── translations/
├── var/
└── vendor/

10 directories, 4 files
Le dossier "bin"

Ce dossier contient les exécutables disponibles dans le projet, que ce soit ceux fournis avec le framework (la console Symfony) ou ceux des dépendances (phpunit, simple-phpunit, php-cs-fixer, phpstan).

Le dossier "config"

Ce dossier a fait l'objet d'un chapitre complet de ce cours. Il contient toute la configuration de votre application, que ce soit le framework, les dépendances (Doctrine, Twig, Monolog) ou encore les routes.

Le dossier "public"

Par défaut, il ne contient que le contrôleur frontal de votre application, le fichier dont la responsabilité est de recevoir toutes les requêtes des utilisateurs.

Le dossier "migrations"

Dans ce dossier et si vous manipulez une base de données, alors vous trouverez les migrations de votre projet générées à chaque changement que vous effectuerez sur votre base de données à l'aide de l'ORM Doctrine. Nous reviendrons sur ce dossier dans le chapitre "Gérez votre base de données avec Doctrine ORM".

Le dossier "src"

C'est ici que se trouve votre application ! Contrôleurs, formulaires, écouteurs d'événements, modèles et tous vos services doivent se trouver dans ce dossier. C'est également dans ce dossier que se trouve le "moteur" de votre application, le kernel.

➜ src tree -L 1
.
├── Controller
├── Entity
├── Kernel.php
└── Repository
Le dossier "tests"

Dans ce dossier se trouvent les tests unitaires, d'intégration et d'interfaces.

Par défaut, l'espace de nom du dossier tests est  App\Tests  et celui du dossier src est  App .

Le dossier "templates"

Ce dossier contient les gabarits qui sont utilisés dans votre projet. Par exemple, si dans un contrôleur on fait :

<?php

$this->render('foo.html.twig');

Alors le gabarit sera localisé dans le dossier templates templates/foo.html.twig .

Le dossier "translations"

Si ce sujet n'a pas été abordé dans ce cours, Symfony fournit un composant appelé Translation capable de gérer de nombreux formats de traductions, dont les formats yaml, xliff, po, mo... Ces fichiers seront situés dans ce dossier.

Le dossier "var"

Ce dossier contient trois choses principalement :

  • les fichiers de cache dans le dossier cache ;

  • les fichiers de log dans le dossier log ;

  • et parfois, si le framework est configuré pour gérer les sessions PHP dans le système de fichiers, on trouve le dossier sessions.

Le dossier "vendor"

Ce dossier contient votre chargeur de dépendances (ou "autoloader") et l'ensemble des dépendances de votre projet PHP installées à l'aide de Composer. Une autre façon de découvrir vos dépendances est d'utiliser la commande "composer show".

Introduction à Symfony Flex

D’un point de vue technique, Symfony Flex est juste un plugin Composer. Flex est capable d'écouter les événements Composer, que ce soit l'installation, la mise à jour ou encore la suppression d'une dépendance.

Parmi les tâches qu'il est capable de réaliser :

  • appliquer une configuration par défaut pour un plugin Symfony ;

  • créer des fichiers/dossiers ;

  • mettre à jour de fichiers (par exemple le fichier config/bundles.php).

Pour cela, Symfony Flex fonctionne à l'aide d'un système de "recettes" qui sont disponibles dans deux dépôts : un dépôt officiel maintenu par l'équipe Symfony et un dépôt communautaire ouvert à tous les mainteneurs de bundles, librairies et projets.

Imaginons par exemple que vous souhaitiez créer une API REST.

Eh bien, avec Flex installé, il vous suffit d'exécuter la commande suivante :

➜ composer require api

Et à l'aide de cette commande seulement, vous aurez une API REST installée et configurée, ainsi que sa documentation au format Swagger. (Si ce type d'application vous intéresse, sachez qu'elle provient d'un projet Symfony appelée API Platform.)

En résumé

  • Pour installer Symfony, vous n'avez besoin que de deux choses : PHP et Composer. Mais on préfèrera installer le logiciel fourni par Symfony appelé symfony qui a l'avantage de fournir un serveur local de développement.

  • Il n'existe pas qu'une seule version du framework, mais plusieurs "squelettes applicatifs" en fonction de votre projet. Pour un projet web, le squelette recommandé s'appelle "website skeleton". Pourtant, dans la pratique, les développeuses et développeurs préfèrent partir du projet Symfony Demonstration qui est le projet d'apprentissage du framework maintenu par l'équipe Symfony.

  • Symfony Flex est utilisé pour gérer la configuration de vos applications. Très simplement, c'est une extension de Composer qui va effectuer des actions supplémentaires à l'installation ou à la désinstallation d'une dépendance. Flex sait quelles actions réaliser grâce à la notion de "recettes". Dans celles-ci, les responsables de projets définissent quelles actions complémentaires (ajouter de la configuration, créer un ou des fichiers, etc...) devront être réalisées.

Exemple de certificat de réussite
Exemple de certificat de réussite