Anatomie d’un projet Symfony
Si tu lis ce billet, c’est que tu as survécu à l’installation de Symfony.
Alors, Symfony, c’est comme la quiche lorraine : tout le monde sait à peu près ce que c’est, mais personne ne la fait pareil (j’ai remplacé les lardons par des huîtres et la crème par de la mayonnaise, tout le monde a a-do-ré !).
On va voir tout ça ensemble.
Le dossier /bin
C’est le coin des exécutables. Dedans, t’as le fichier console
, c’est un peu ton stagiaire personnel.
Tu lui demandes tout, il te répond toujours :
- Créé un controller, lancer le serveur intégré de Symfony,
- Vide le cache,
Bref, il fait tout sauf le café. Mais t’inquiète pas, en version 8, il fera probablement le café. D’ailleurs, il sait même se mettre à jour tout seul. Plus intelligent que Siri quoi.
Le dossier /config
Là, c’est le tiroir où Symfony planque ses secrets honteux : paramètres, routes, services… C’est le placard à balais, mais organisé.
C’est aussi ici que tu configures ton projet en YAML. Pourquoi YAML ? Parce que le XML, ça laid (bisous les développeurs Android) et le JSON, c’est pas assez mystérieux. Et puis bon, écrire en YAML c’est facile, sauf quand t’oublies une indentation, et là, c’est l’apocalypse, et ton projet te fait comprendre que tu ne sais même pas compter jusqu’à quatre espaces.
Le dossier /public
Ça, c’est ta vitrine. Tout ce qui est là-dedans, c’est public, comme le nom l’indique.
Il y a index.php
, le videur de boîte. Il fait entrer tout le monde et c’est lui qui gère les embrouilles avec les requêtes HTTP.
Il y a aussi tes fichiers CSS et JS : les trucs que ton navigateur va charger pour que ton site ressemble à autre chose qu’une page du minitel.
Il y également tes images, tes fonts custom, bref tout ce qu’il faut pour éviter la honte sur internet.
Le dossier /src
Ah, là c’est sérieux : c’est là qu’on bosse. Ici, on va trouver :
- Controller : c’est la réception de l’hôtel. Tu demandes un truc, le controller t’accueille et t’envoie skier gentiment vers un autre service.
- Entity : c’est la pièce d’identité de tes données. Ça, c’est des objets PHP que tu stockes en base de données. Un peu comme les dossiers administratifs mais en plus sympa (ou pas).
- Repository : les archivistes du projet. Ils passent leur temps à fouiller la base de données pour récupérer tes entités. Efficaces, tant que tu leur expliques précisément ce que tu veux.
- Service : Les couteaux suisses de ton projet. Dès que tu sais pas où mettre un truc, tu dis : “Allez, c’est un service”. C’est un peu ton tiroir à piles usagers que tu gardes en te disant « on sait jamais ».
- Subscriber : Ça, se sont les espions de ton app : ils observent ce qui se passe et agissent en douce, genre : “Ah tiens, une erreur, et hop, je fais un truc !”. Très pratiques, mais vite bordéliques.
Le dossier /templates
Là, c’est du Twig, le moteur de template préféré des devs Symfony. Twig, c’est comme PHP, mais sans le côté “J’ai appris en 1998 sur un forum perdu”. Ça rend les vues sexy sans mettre le bazar partout. En plus, avec ses filtres, t’as même pas besoin de savoir coder, suffit juste de copier-coller des bouts de Stack Overflow en espérant que ça marche.
Le dossier /tests
Ça, c’est le coin des maniaques. Les développeurs sérieux aiment bien vérifier que tout fonctionne comme prévu. Alors, ils écrivent des tests unitaires et fonctionnels. Personne ne les lit vraiment, mais c’est comme les mentions légales sur les sites (vas lire les miennes, tu ne seras pas déçu), il faut les avoir au cas où. Et ça donne bonne conscience quand t’en as marre de corriger tes propres bugs.
Le dossier /var
C’est la cave. Symfony y met tout ce qu’il ne veut plus voir : le cache, les logs, les sessions… Comme ta cave à toi finalement : plein de trucs importants, mais que tu n’as pas envie de regarder souvent. Sauf quand ça plante, et là, tu pars en expédition archéologique pour retrouver pourquoi ça ne marche pas.
Le dossier /vendor
Là, c’est l’open bar de tes dépendances. Tous les trucs que tu as installés avec Composer arrivent ici. Ça pèse vite 300 Mo pour faire des trucs simples, mais bon, c’est comme ça. Tu y trouves même des trucs dont tu ignores l’existence, mais que t’as installés un jour à 3h du matin en te disant « je verrais ça plus tard ».
composer.json
C’est ton carnet d’adresses. Ça liste toutes tes dépendances PHP. Si un jour t’as oublié pourquoi ton projet met trois plombes à s’installer, regarde dedans, t’as sûrement 42 bundles inutiles mais “tellement pratiques” selon Stack Overflow. Par contre, bon courage pour faire du ménage sans tout casser.
symfony.lock
Le videur encore plus sévère que index.php
. Il vérifie que personne ne change les versions de tes dépendances sans prévenir. Très utile si t’as des collègues un peu trop créatifs ou des CI/CD trop enthousiastes.
Avec cette présentation, on va pouvoir continuer sans que tu regardes Symfony comme une poule qui voit un couteau.