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.
On pourrait tout écrire dans le contrôleur : envoyer le corbeau à Gorm, boucler sur les guildes… puis y ajouter demain la mise à jour de l'ardoise, après-demain une statistique. Le contrôleur deviendrait le carrefour de toute la taverne.
Un événement métier
L'autre voie : le contrôleur annonce ce qui s'est passé (« un plat a été ajouté »), et ceux que ça intéresse écoutent. L'événement PlatAjoute existe déjà : une simple classe qui transporte le plat et le cuisinier. Ajouter une réaction, c'est ajouter un écouteur, sans toucher au contrôleur.
Votre mission
- Dans
CuisineController::nouveauPlat(), déclenchezPlatAjouteune fois le plat enregistré, et seulement dans ce cas. - Complétez
PrevenirLeTavernier: à chaquePlatAjoute, un corbeau part pour Gorm, avec le nom du plat et celui du cuisinier. - Gorm doit être prévenu avant les guildes.
Pour essayer : connectez-vous avec bruna@dragon-ivre.fr / marmite, inventez un plat, puis ouvrez /voliere. Dans la console, debug:event-dispatcher "App\Event\PlatAjoute" liste les écouteurs de l'événement, dans l'ordre.