Chapitre 9 du parcours Symfony pour les devs PHP
Les rouages de la taverne
6 exercices · 1 700 XP · environ 3 h 30
Événements du noyaukernel.request#[AsEventListener]RequestEventClockInterfaceÉvénement métierEventDispatcherInterfacedispatchPriorité des écouteursÉcouteurs Doctrine#[AsEntityListener]prePersistSluggerInterfaceDécoration de service#[AsDecorator]#[AutowireDecorated]CacheCacheInterfaceVariables d'environnement#[Autowire(env:)]Processeurs int: et csv:.env.env.testDébogageÉvénements
Les exercices du chapitre
-
Fermé le lundi
Exercice 1 · 270 XP · 5 objectifs vérifiés par des tests
Le lundi, Bruna fait les marchés et Gorm compte les tonneaux : la taverne est fermée. Jusqu'ici, Pipin accrochait un écriteau sur la porte, mais le site, lui, continue d'accepter les réservations. Il faut une règle qui s'applique à toutes les pages de la salle, sans toucher à chaque contrôleur.
Événements du noyaukernel.request#[AsEventListener]RequestEventClockInterface
-
La cloche de la taverne
Exercice 2 · 270 XP · 5 objectifs vérifiés par des tests
Quand Bruna invente un plat, toute la taverne doit le savoir. Pipin a déjà écrit de quoi inviter les guildes à le goûter (InviterLesGuildes), et Gorm exige d'être prévenu en premier. Mais le contrôleur de la cuisine ne prévient personne.
Événement métierEventDispatcherInterfacedispatchPriorité des écouteurs
-
Le slug qui s'écrit tout seul
Exercice 3 · 270 XP · 5 objectifs vérifiés par des tests
Le slug d'un plat (ragout-du-nain, dans /plat/ragout-du-nain) se calculait dans le contrôleur de la cuisine. Mais les plats arrivent aussi par les commandes, par le festin du vendredi, par les tests… et à chaque fois, quelqu'un doit penser au slug. Pipin a oublié une fois : plat enregistré, erreur SQL, soirée gâchée.
Écouteurs Doctrine#[AsEntityListener]prePersistSluggerInterface
-
L'oracle des vents
Exercice 4 · 280 XP · 5 objectifs vérifiés par des tests
La volière affiche désormais les vents du jour vers trois contrées, lus par le mage de la tour. Ses prévisions sont justes, mais il met du temps à lire les astres et il facture chaque consultation. À chaque visite de la volière, trois consultations. Ouvrez l'aperçu et rechargez la page : regardez la facture grimper.
Décoration de service#[AsDecorator]#[AutowireDecorated]CacheCacheInterface
-
Les réglages de la taverne
Exercice 5 · 270 XP · 5 objectifs vérifiés par des tests
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.
Variables d'environnement#[Autowire(env:)]Processeurs int: et csv:.env.env.test
-
🐉 Boss : la taverne à l'envers
Exercice 6 · 340 XP · 5 objectifs vérifiés par des tests
Pipin a passé la semaine à « rendre la taverne plus robuste ». Il a lu la moitié de la documentation de Symfony et en a appliqué un peu partout. Le résultat :
DébogageÉvénementsÉcouteurs DoctrineDécoration de serviceCache