Architecture d’un projet avec symfony 3

symfony bundle

Développer avec Symfony 3 demande de respecter une certaine architecture bien différente de Symfony 2 afin que notre application respecte le principe  de maintenabilité et réutilisabilité.

De ce fait aujourd’hui tout s’articule autour d’un bundle unique  « src\AppBundle » qui représente le bundle principal de notre application  car  un bundle doit être capable de fonctionner tout seul mais cela n’étant pas le cas toujours.  Finis donc la logique en Symfony 2 qui voulait qu’on divise notre architecture en différents bundles.

Néanmoins nous pouvons créer de nouveau  bundles personnels dans notre application  soit :

  • Bundle qui sera interne à notre application
  • Bundle qui pourra être utilisé dans toutes nos applications et distribuable.

Dans cet article nous allons aborder le rôle des principaux dossiers dans l’architecture  d’un projet Symfony 3 standard, libre à vous selon votre expérience et celle de vos équipes de structurer personnellement certaines parties.

Arborescence  standard de niveau 1

symfony_dossier

Dossier

Rôle

app Stocke les configurations, traductions,  Template, …
bin Stocke les scripts exécutables.
src Stocke le code de notre application.
tests Stocke la liste des tests unitaires et fonctionnels.
var Stocke les logs, les caches et les sessions générés par notre application.
vendor Stocke les bundles tiers utilisés dans notre application.
web les fichiers "publics" de notre application app.php, app_dev.php,  robots.txt, Css, Js, images, fonts, …

Arborescence de niveau inférieur

Ci-dessous  la description  des principaux  dossiers :

app

Dossier Rôle
app\Ressources Stocke les fichiers Templates commun, les Templates d’exception, tout fichier commun.
app\config Stocke les configurations, paramétrages,  services, routes de tous nos environnements.
app\DoctrineMigrations Stocke les migrations doctrines pour la gestion des changements de la base de données via DoctrineMigrationsBundle
App\translations Stocke tous les fichiers de traduction de l'application

 

src

Dossier

Rôle

src\AppBundle\Command Stocke toutes les tâches et  routines à exécuter.
src\AppBundle\Controller Stocke tous les Controllers de traitement des requêtes http.
src\AppBundle\DataFixtures Stocke les jeux données  afin d'avoir des données pour le fonctionnement de l'application.
src\AppBundle\Entity Stocke les déclarations des différentes entités doctrine.
src\AppBundle\Repository Stocke toute les requêtes doctrines  ou SQL sur la base de données
src\AppBundle\Listener Stocke les Listeners qui permettent  d’écouter des évènements et exécuter des tâches en fonction.
src\AppBundle\Model Stocke tous nos models de données sans la persistance doctrine afin d’être indépendant.
src\AppBundle\Form Stock les différents formulaires de l’application.
src\AppBundle\Manager Stocke le code métier à utiliser dans les Controllers.
src\AppBundle\Ressources Stocke les fichiers config, vues, images et tous les fichiers  nécessaires au fonctionnement de la vue.
src\AppBundle\Twig Stocke les extensions Twig personnel.
src\AppBundle\Utils Stocke les traitements personnels de l’application (méthode de césure, ..).

Maintenant nous avons une idée du rôle que jouent les principaux dossiers dans l’architecture d’un projet en Symfony 3 et des possibilités qui sont ouvertes aux équipes de développement.

Merci à tous

Enregistrer

Enregistrer

Enregistrer

Enregistrer

Un commentaire

  1. Bonjour Chere communautée je suis un jeune étudiant en developpement web.
    J’ai eu à commencé à apprendre symfony il y’a 15 de cela et j’aimerai bien entamé un projet la dessus.
    vos suggestions et vos conseils SVP.
    Cordialement!!

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.