Gorm part un mois en voyage : Bruna reprend la taverne. Elle préfère fermer le mercredi, et ses corbeaux volent vers d'autres contrées. Mais tout est écrit en dur dans le code : '1' pour le lundi, 'Gorm' pour le tavernier, trois contrées dans le contrôleur de la volière. Pour changer un réglage, il faudrait modifier le code et redéployer.
Les variables d'environnement
Ce qui change d'un serveur à l'autre (ou d'un mois à l'autre) ne doit pas vivre dans le code, mais dans des variables d'environnement. Symfony les lit dans le vrai environnement du serveur, et à défaut dans les fichiers .env :
.env: les valeurs par défaut, commitées ;.env.test: ce qui change pour les tests ;.env.local: les réglages d'une machine, jamais commités.
Un service reçoit une variable avec #[Autowire(env: '…')].
Votre mission
Rendez la taverne réglable, sans changer son comportement par défaut :
JOUR_DE_FERMETURE: jour de fermeture de la salle (1 = lundi… 7 = dimanche, 0 = jamais). Par défaut 1, et 0 en test : les tests des chapitres suivants n'ont pas à craindre les lundis ;TAVERNIER: qui est prévenu des nouveaux plats (par défaut Gorm) ;CONTREES_DE_LA_VOLIERE: les contrées dont la volière affiche les vents, séparées par des virgules ;- un jour de fermeture qui n'est pas un nombre (« lundi ») doit être refusé, pas lu comme 0.
Et les secrets ?
Un mot de passe ou une clé d'API est aussi un réglage, mais il ne doit jamais être commité dans .env. Symfony propose un coffre-fort (secrets:set), chiffré et commitable, dont la clé de déchiffrement reste sur le serveur. La fiche du chapitre y revient.