Programmation PHP/Symfony/Évènement

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche


Installation[modifier | modifier le wikicode]

Terminal
Logo
composer require symfony/event-dispatcher


Utilisation[modifier | modifier le wikicode]

Pour exécuter du code après certaines exécutions du code, il faut créer une classe qui écoute ces évènements : un event listener[1].

Cette classe doit peut être reliée à son évènement soit dans sa déclaration de service (en YAML), soit par l'intermédiaire d'un souscripteur (event subscriber).

Pour lister les évènements et écouteurs d'un projet (avec leurs priorités) :

php bin/console debug:event-dispatcher

Exemple YAML[modifier | modifier le wikicode]

services:
    App\EventListener\MyViewListener:
        tags:
            - { name: kernel.event_listener, event: kernel.view }
class MyViewListener
{
    public function onKernelException(ExceptionEvent $event)
    {
        ...
    }
}

Exemple avec souscripteur[modifier | modifier le wikicode]

Un souscripteur doit forcément implémenter EventSubscriberInterface.

class ViewSubscriber implements EventSubscriberInterface
{
    public function getSubscribedEvents()
    {
        return [
            KernelEvents::VIEW => []
        ];
    }
}

Débogage[modifier | modifier le wikicode]

Les erreurs qui surviennent selon certains évènements ne sont pas faciles à provoquer ou visualiser. Pour les voir sans passer par le profiler, on peut ajouter temporairement dans un contrôleur :

$this->getEventDispatcher()->dispatch('mon_service');

Références[modifier | modifier le wikicode]