Anatomie d’un projet Symfony

5 min de lecture

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 :

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 :

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.

Confidentialité

Ce site utilise Umami pour analyser le trafic de manière anonyme. Acceptez-vous la collecte de données anonymes ?