L3 Info : PHP et Applications Web
 
◃  Ch. 13 Symfony 7.4  ▹
 

Architecture d'un projet Symfony

  • L'architecture d'un projet symfony est variable selon les versions, il convient donc d'être vigilant sur ce point.
  • src/ et templates seront nos principales zones d'action
  • Architecture d'un projet Symfony (7.x)
    • bin/ les executables dont bin/console qui permet notamment de générer un environnement d'exécution complet
    • config/ pour configurer l'environnement
      • packages/ : Configuration des bundles (ex : doctrine.yaml, security.yaml, framework.yaml).
      • routes/ : Définition des routes (ex : annotations.yaml, dev/ pour les routes de développement).
      • services.yaml : Configuration des services et de l’injection de dépendances.
    • public/ tout ce qui doit être accessible : css, js, images... et le point d'entrée de l'application index.php
    • src/ pour le code source de l'application (PHP)
      • Controller/ : Classes des contrôleurs (logique de routage et de traitement des requêtes).
      • Entity/ : Classes des entités (modèles de données, souvent utilisées avec Doctrine).
      • Repository/ : Classes des repositories (logique d’accès aux données).
      • Kernel.php : Classe principale du noyau Symfony.
    • templates/ vues produites avec les fichiers twig (pour l'affichage)
    • var/ pour les fichiers générés automatiquement : logs, sessions, cache
    • vendor/ bibliothèques tiers : dépendances installées à l'aide de Composer (dossier non versionné)
    • tests/ pour les tests unitaires
    • translations/ pour configurer les sites multilingues
    • migrations/ fichiers de migration de base de données (si Doctrine Migrations est utilisé).
    • assets/ les assets (CSS, JS, images) qui seront compilés avec Webpack Encore (si utilisé).
    • .env et .env.local Fichiers de configuration d’environnement (variables d’environnement, ex : accès à la base de données).
    • composer.json et composer.lock dépendances PHP du projet et leurs versions exactes.
    • symfony.lock généré par Symfony CLI pour verrouiller les versions des outils Symfony utilisés.
    • package.json et webpack.config.js configuration des dépendances JavaScript et de Webpack Encore (si utilisé pour la gestion des assets).