Chapitre 9 du parcours Symfony pour les devs PHP

Les rouages de la taverne

6 exercices · 1 700 XP · environ 3 h 30

Ce chapitre fait travailler : É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

  1. 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

  2. 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

  3. 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

  4. 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

  5. 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

  6. 🐉 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