5. Le framework Symfony
Symfony est un ensemble de composants PHP ainsi qu'un framework MVC libre écrit en PHP. Il fournit des fonctionnalités modulables et adaptables qui permettent de faciliter et d’accélérer le développement d'un site web.
L'initiateur du projet Symfony est le français Fabien Potencier.
Source : Wikipedia.fr
5.1. Environnement de travail
Afin d'utiliser Symfony, on peut opter pour trois solutions :
- installation classique du framework symfony avec PHP 8.2 ou 8.3 ainsi que MySQL.
Voici la
procédure à suivre.
- l'utilisation d'une machine virtuelle sous VirtualBox basé sur les caractéristiques suivantes :
- Ubuntu 22.04
- PHP 8.1
- Symfony 6
- MySQL
- Apache ou NGINX
- Visual Studio Code
Pour l'installation de la machine virtuelle, voici la procédure à suivre.
- ou l'utilisation de docker avec un environnement spécifique à symfony 6
5.2. Fonctionnement de Symfony
Le framework Symfony utilise les espaces de nom (namespace) en PHP afin de gérer les différentes classes qu'il utilise.
Les espaces de nom en PHP sont en quelque sorte des dossiers virtuels qui servent à encapsuler certains objets afin de les différentier d'autres objets de même nom.
Dans le cas de Symfony le répertoire src représente l'espace de nom App.
On trouve ensuite dans ce répertoire les sous-répertoires (ou espaces de nom) :
- Entity qui permet de définir les classes liées au projet (ex. Personne, Véhicule, Commande, ...)
- Repository qui sont les classes permettant l'accès à la base de données
- Form qui permet de définir des formulaires de saisie associés à des entités
- Controller qui sont des classes dont les méthodes correspondent à des actions
(ex: créer, modifier, supprimer une personne, lister les personnes, ...)
5.2.1. Component et Bundle
Symfony utilise deux types d'éléments (classes) :
- les components qui sont des classes qui peuvent être réutilisées par tout utilisateur dans un environnement éventuellement autre que symfony
- les bundles qui sont des classes ou des paquets (packages) spécifiques à Symfony : en général un bundle s'appuie sur plusieurs components/
-
Voici quelques exemples de components (composants) que l'on peut installer en utilisant composer (Composer is a tool for dependency management in PHP) :
- HttpKernel qui gère une requête HTML de la réception de la requête et de ses paramètres jusqu'au retour d'une réponse
- HttpFoundation gère les paramètres
- routing s'occupe du système de routage qui met en relation un identifiant (ex. /personne/creer) et une
méthode d'un Controller
Le framework Laravel utilise notamment ces trois classes.
En ce qui concerne les bundles, on trouve par exemple :
- FOSUserBundle chargée de l'authentification des utilisateurs
- FOSRestBundle permet de créer des API de type REST
- FrameworkBundle : configuration des bundles pour Symfony
5.3. Réalisation d'une application web avec Symfony
Nous allons utiliser la base de données DVM (Département des Véhicules à Moteur).
Nous allons donc gérer des conducteurs identifiés par leur nom de famille ainsi que les
véhicules qui leur appartiennent. Chaque véhicule dispose d'équipements dans une certaine
quantité. Par exemple 4 Jante(s) 18 pouces.
Chaque véhicule possède une marque et un modèle ainsi qu'une date d'achat.
Un équipement est défini par un libellé et un prix unitaire.
- création du site web
- création de la base de données et des accès
- mise en place du design du site web
- création de l'entité Conducteur et de son Repository
- premier contrôleur
- contrôleur pour le conducteur
- ajouter, supprimer, modifier un conducteur
- lister, supprimer un véhicule
- ajouter, modifier un véhicule
- lister, supprimer un équipement
- ajouter, modifier un équipement
- lier équipement et véhicule
- modification des entités véhicule et équipement
- Test d'insertion global
- Evaluation