Symfony 5 : introduction
Achref El Mouelhi
Docteur de l’université d’Aix-Marseille
Chercheur en Programmation par contrainte (IA)
Ingénieur en Génie logiciel
[email protected]
H & H: Research and Training 1 / 24
Plan
1 Introduction
2 Installation
3 Symfony 5 : structure et fonctionnement
4 Symfony 5 : quelques outils
H & H: Research and Training 2 / 24
Introduction
Symfony
Symfony
framework PHP sorti en octobre 2005
I c
français ELH
U
L MO
conçu et développé par SensioLabs
h r e fE
open-source
A c
c
l’architecture MVC
basé sur
utilisant le protocole HTTP
H & H: Research and Training 3 / 24
Introduction
Symfony
Framework ?
En français : cadre de travail
Ensemble de composants logiciels et API facilitant le
I c
H
développement d’applications : pour les développeurs maitrisant
EL
U
certains concepts informatiques (POO, SQL, MVC...)
L MO
f E
chre
c A
H & H: Research and Training 4 / 24
Introduction
Symfony
Framework ?
En français : cadre de travail
I c
Ensemble de composants logiciels et API facilitant le
H
développement d’applications : pour les développeurs maitrisant
EL
U
certains concepts informatiques (POO, SQL, MVC...)
L MO
f E
re et CMS
c h
Ne pas confondre framework
c A
IDE (en anglais Integrated Development Environment,
Environnement de développement intégré)
CMS (en anglais Content Management System, Système de
gestion de contenu) pour les développeurs novices
H & H: Research and Training 4 / 24
Introduction
Symfony
Pourquoi utiliser un framework ? (Ce n’est pas obligatoire)
I c
Un code de qualité
EL H
U
MOprojet
Une meilleure structuration de notre
L
h r e f E gérés par le framework
Conflits entre dépendances
A c et API mis à disposition de développeurs
c
Plusieurs composants
H & H: Research and Training 5 / 24
Introduction
Symfony
Exemple d’utilisation de Symfony
I c
Dailymotion (depuis 2009)
ELH
U
Composer
L MO
OpenClassroom f E
chre
SNCF
c A
...
H & H: Research and Training 6 / 24
Introduction
Symfony
Les différentes versions de Symfony
I c
Symfony 1 : sorti en octobre 2005
ELH
Symfony 2 : sorti en août 2011 OU
L M
f E 2015
Symfony 3 : sorti en novembre
r e
Symfony 4 A chen novembre 2017
: sorti
c
Symfony 5 : sorti en novembre 2019
H & H: Research and Training 7 / 24
Installation
Symfony
Installation sous Windows (avec un installer)
Téléchargez https://get.symfony.com/cli/setup.exe puis installez
I c
ELH
U
L MO
f E
chre
c A
H & H: Research and Training 8 / 24
Installation
Symfony
Installation sous Windows (avec un installer)
Téléchargez https://get.symfony.com/cli/setup.exe puis installez
I c
ELH
U
MO
Installation sous Linux (avec une commande)
L
r e fE
wget https://get.symfony.com/cli/installer
h -O - | bash
c
c A
H & H: Research and Training 8 / 24
Installation
Symfony
Installation sous Windows (avec un installer)
Téléchargez https://get.symfony.com/cli/setup.exe puis installez
I c
ELH
U
MO
Installation sous Linux (avec une commande)
L
r e fE
wget https://get.symfony.com/cli/installer
h -O - | bash
c
c A
Installation sous Mac (avec une commande)
curl -sS https://get.symfony.com/cli/installer | bash
H & H: Research and Training 8 / 24
Installation
Symfony
Pour créer un projet Web Symfony 5
Exécutez symfony new --full premier projet symfony
I c
ELH
U
L MO
f E
chre
c A
H & H: Research and Training 9 / 24
Installation
Symfony
Pour créer un projet Web Symfony 5
Exécutez symfony new --full premier projet symfony
I c
Pour créer un projet console ou microservice Symfony 5EL
H
Exécutez symfony new premier projetM
OU
f E L symfony
c h re
c A
H & H: Research and Training 9 / 24
Installation
Symfony
Pour créer un projet Web Symfony 5
Exécutez symfony new --full premier projet symfony
I
c
Pour créer un projet console ou microservice Symfony 5EL
H
Exécutez symfony new premier projetM
OU
f E L symfony
c h re
Pour lancer un
cprojetASymfony 5 créé avec la commande symfony, exécutez
cd --full premier projet symfony
symfony server:start ou symfony serve
H & H: Research and Training 9 / 24
Installation
Symfony
I c
ELH
Pour créer un projet Web Symfony d’une version antérieure
U
O projet symfony
M
Exécutez symfony new --full premier
L
--version=4.4
h r e fE
A c
c
H & H: Research and Training 10 / 24
Installation
Symfony
Pour configurer un projet Symfony existant (sur GitHub par
exemple)
I c
# cloner un projet existant
git clone lien_vers_repository_github ELH
U
L MO
# se positionner dans le projet
f E
cd my-project/
A c hre
c
les dépendances composer dans vendor
# installer
composer install
H & H: Research and Training 11 / 24
Installation
Symfony
Sous Visual Studio Code
Installer l’extension PHP Namespace Resolver I c
H
EL pour
Elle permet d’importer les namespacesU nécessaires
certaines classes
L MO
r e E sur la classe concernée
fdroit
A c h
Pour l’utiliser, faites clic
c
Allez dans Import Class et choisir le namespace
correspondant
H & H: Research and Training 12 / 24
Symfony 5 : structure et fonctionnement
Symfony
Structure d’un projet Symfony 4/5
bin/ : contenant deux exécutables, la console de Symfony et phpunit
config/ : contenant les fichiers de configuration (routes, ORM...)
I c
public/ : seul dossier accessible de l’extérieur (contenant le contrôleur frontal
index.php)
ELH
U
MO
src/ : contenant les fichiers sources de l’application (contrôleurs, entités, formulaires,
DAO...)
f E L
hre
templates/ : contenant les vues (vue partielle) de l’application
c
c A
tests/ : contenant les fichiers permettant de tester l’application
translations/ : contenant les fichiers de l’internationalisation
var/ : utilisé par Symfony pendant l’exécution, contenant les données de cache, le log et
les sessions
vendor/ : contenant les fichiers nécessaires pour une application Symfony (mentionnés
dans composer.json)
H & H: Research and Training 13 / 24
Symfony 5 : structure et fonctionnement
Symfony
Kernel ?
noyau de Symfony
défini dans vendor/symfony/http-kernel
I
c
H
ELle contrôleur adéquat
utilisé par le contrôleur frontal pour désigner
U
MO
pour répondre à la requête HTTP reçue
L
h r e fE
A c
c
H & H: Research and Training 14 / 24
Symfony 5 : structure et fonctionnement
Symfony
Kernel ?
noyau de Symfony
défini dans vendor/symfony/http-kernel
I
c
H
ELle contrôleur adéquat
utilisé par le contrôleur frontal pour désigner
U
MO
pour répondre à la requête HTTP reçue
L
h r e fE
A c
c
Contrôleur frontal
point d’entrée d’une application Symfony
défini dans public/index.php
H & H: Research and Training 14 / 24
Symfony 5 : structure et fonctionnement
Symfony
Deux environnements de travail
prod (destiné aux utilisateurs finaux de l’application)
I c
montrant l’application telle qu’elle sera visible par les visiteurs
ELH
rapide à exécuter
n’affichant pas les messages M O U
fE L d’erreur.
c h e
dev (destinés aux dréveloppeurs)
c lentA
Plus que la version de production
Environnement de débogage complet
Possibilité d’ajouter des nouvelles fonctionnalités
H & H: Research and Training 15 / 24
Symfony 5 : structure et fonctionnement
Symfony
Remarque I c
L H
éeE
Par défaut, une application est configurU à l’environnement dev
M O
Pour changer d’environnement,
f L
E allez dans .env et mettez la
valeur de APP ENV ràe
A ch prod
H & H: Research and Training 16 / 24
Symfony 5 : structure et fonctionnement
Symfony
Extrait d’index.php
$kernel = new Kernel($_SERVER[’APP_ENV’], (bool) $_SERVER[’
APP_DEBUG’]);
$request = Request::createFromGlobals();
$response = $kernel->handle($request);
I c
$response->send();
$kernel->terminate($request, $response);
ELH
U
L MO
f E
c hre
c A
H & H: Research and Training 17 / 24
Symfony 5 : structure et fonctionnement
Symfony
Extrait d’index.php
$kernel = new Kernel($_SERVER[’APP_ENV’], (bool) $_SERVER[’
APP_DEBUG’]);
$request = Request::createFromGlobals();
$response = $kernel->handle($request);
I c
$response->send();
$kernel->terminate($request, $response);
ELH
U
L MO
f E
Explication
c hre
c A
Le contrôleur frontal charge le kernel selon l’environnement précisé dans
.env
Il récupère la requête
Il utilise le kernel pour retourner une réponse
H & H: Research and Training 17 / 24
Symfony 5 : structure et fonctionnement
Symfony
Modèle Vue
Demande Construction
I c
de données page HTML
ELH
Adresse 1
U Contrôleur 1
Interception
MO Exécution Page HTML
f EL
de requête
c h re
Adresse 2
c
A Contrôleur frontal Kernel Contrôleur 2
. Recherche .
. contrôleur .
. adèquat .
Adresse n Routeur Contrôleur n
H & H: Research and Training 18 / 24
Symfony 5 : structure et fonctionnement
Symfony
Déroulement
L’utilisateur saisit l’adresse d’une page de notre site
Le contrôleur frontal intercepte la requête et il la transmet au Kernel
I
c
H
EL à la page
Le Kernel demande au Routeur le contrôleur adéquat
demandée
O U
L M
f Ele Kernel exécute le contrôleur
À la réception d’une réponse,
r e
Le contrôleurA ch avec le modèle pour récupérer ou stocker
communique
certaines
cdonnées
Ensuite il renvoie ces données à la vue pour qu’elle construise la page
HTML et la lui retourne.
Enfin le contrôleur envoie à l’utilisateur la réponse (page HTML).
H & H: Research and Training 19 / 24
Symfony 5 : quelques outils
Symfony
I c
Quelques outils Symfony 5
ELH
U
Console
L MO
f E
Flex
c hre
c A
H & H: Research and Training 20 / 24
Symfony 5 : quelques outils
Symfony
Console
Outil (composant) pour développeur
Disponible depuis le lancement de Symfony
I c
H
EL en ligne de
commandes (CLI ou CommandM Line
U
Permettant d’interagir avec l’application Symfony
OInterface).
L
E par le fichier console
f bin
r e
Défini dans le répertoire
c h
c A
H & H: Research and Training 21 / 24
Symfony 5 : quelques outils
Symfony
Console
Outil (composant) pour développeur
Disponible depuis le lancement de Symfony
I c
H
EL en ligne de
commandes (CLI ou CommandM Line
U
Permettant d’interagir avec l’application Symfony
OInterface).
L
E par le fichier console
f bin
r e
Défini dans le répertoire
c h
c A
Pour consulter la liste des commandes disponibles
php bin/console
H & H: Research and Training 21 / 24
Symfony 5 : quelques outils
Symfony
La console, pourquoi ?
I
c
Pour :
E LH
U
MOôleurs, entités, formulaires,
faciliter la création/génération de contr
L
bundles...
h r e fE
c
éviter les erreurs
A
c
le développement
accélérer
H & H: Research and Training 22 / 24
Symfony 5 : quelques outils
Symfony
I
c
H
EL générer avec la
Pour consulter la liste des éléments que l’on puisse
console O U
L M
php bin/console list make
h r e fE
A c
c
H & H: Research and Training 23 / 24
Symfony 5 : quelques outils
Symfony
Flex
Outil pour développeur
Disponible depuis la version 4 de Symfony
I c
Exécuté lorsque Composer est utilisé pour installer une nouvelle dépendance (recette ou
recipes en anglais) afin de la configurer
ELH
U
L MO
f E
c hre
c A
H & H: Research and Training 24 / 24
Symfony 5 : quelques outils
Symfony
Flex
Outil pour développeur
Disponible depuis la version 4 de Symfony
I c
Exécuté lorsque Composer est utilisé pour installer une nouvelle dépendance (recette ou
recipes en anglais) afin de la configurer
ELH
U
L MO
f E
c hre
c A
recipe = bibliothèque standard (définie dans packagist : dépôt de Composer) + configuration
H & H: Research and Training 24 / 24
Symfony 5 : quelques outils
Symfony
Flex
Outil pour développeur
Disponible depuis la version 4 de Symfony
I c
Exécuté lorsque Composer est utilisé pour installer une nouvelle dépendance (recette ou
recipes en anglais) afin de la configurer
ELH
U
L MO
f E
c hre
c A
recipe = bibliothèque standard (définie dans packagist : dépôt de Composer) + configuration
Pour consulter la liste des recettes
https://flex.symfony.com/
H & H: Research and Training 24 / 24