Cycle de vie d’une application Symfony

Ajouter un commentaire

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)
  • 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
  • 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
  • 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
  • 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…)
  • kernel.finish_request => distribué après l’événement kernel.response. Il est utile de réinitialiser l’état global de l’application
  • kernel.terminate => distribué après que la réponse est ennoyé à l’utilisateur (après l’exécution de la méthode handle()
  • 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

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