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 :

  1. installation classique du framework symfony avec PHP 8.2 ou 8.3 ainsi que MySQL.
    Voici la procédure à suivre.
  2. 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.

  3. 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) :

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) :

Le framework Laravel utilise notamment ces trois classes.

En ce qui concerne les bundles, on trouve par exemple :

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.

  1. création du site web
  2. création de la base de données et des accès
  3. mise en place du design du site web
  4. création de l'entité Conducteur et de son Repository
  5. premier contrôleur
  6. contrôleur pour le conducteur
  7. ajouter, supprimer, modifier un conducteur
  8. lister, supprimer un véhicule
  9. ajouter, modifier un véhicule
  10. lister, supprimer un équipement
  11. ajouter, modifier un équipement
  12. lier équipement et véhicule
  13. modification des entités véhicule et équipement
  14. Test d'insertion global
  15. Evaluation