Cycle de vie d’une application Symfony
Je partage avec vous quelques événements Symfony que n’importe quel développeur Symfony devrait les connaitre
Lors de la gestion d’une requête HTTP, le framework Symfony (ou toute application utilisant le composant HttpKernel) distribue certains événements que vous pouvez utiliser pour modifier la façon dont la requête est traitée.
- kernel.request => distribué avant que le contrôleur ne soit déterminé, il est utile d’ajouter des informations à la requête (Request)
- Event Class : RequestEvent
- Argument passed to listener : GetResponseEvent
- kernel.controller => distribué après la détermination de contrôleur mais avant son exécution, il est utile d’initialiser des éléments au contrôleur comme les param converters
- Event Class : ControllerEvent
- Argument passed to listener : FilterControllerEvent
- kernel.controller_arguments => distribué juste avant l’appel d’un contrôleur Il est utile de configurer les arguments qui vont être transmis au contrôleur. En règle générale, il est utilisé pour mapper les paramètres de routage URL à leurs arguments nommés correspondants
- Event Class : ControllerArgumentsEvent
- Argument passed to listener : FilterControllerArgumentsEvent
- kernel.view => distribué après l’exécution du contrôleur mais uniquement si le contrôleur ne renvoie pas d’objet Response. Il est utile de transformer la valeur envoyée en objet Response sont Symfony a besoin
- Event Class : ViewEvent
- Argument passed to listener : GetResponseForControllerResultEvent
- kernel.response => distribué après que le contrôleur ou tout écouteur kernel.view retourne un objet Response. Il est utile de modifier ou de remplacer la réponse avant de la renvoyer (ajouter / modifier des en-têtes HTTP, ajouter des cookies…)
- Event Call : ResponseEvent
- Argument passed to listener : FilterResponseEvent
- kernel.finish_request => distribué après l’événement kernel.response. Il est utile de réinitialiser l’état global de l’application
- Class Event : FinishRequestEvent
- Argument passed to listener : FinishRequestEvent
- kernel.terminate => distribué après que la réponse est ennoyé à l’utilisateur (après l’exécution de la méthode handle()
- Class Event : TerminateEvent
- Argument passed to listener : PostResponseEvent
- kernel.exception => distribué si une exception est lancée par l’application ( une erreur survient lors du traitement de la requête HTTP). Il est utile de récupérer des erreurs ou de modifier les détails de l’exception envoyés en réponse
- Class Event : ExceptionEvent
- Argument passed to listener : GetResponseForExceptionEvent
Il est possible de savoir quels sont les écouteurs (listeners) enregistrés pour un événement donné
- php bin/console debug:event-dispatcher kernel.exception
https://symfony.com/doc/current/reference/events.html