Les évènements

Voir la vidéo
Description Sommaire

Les évènements vont permettre de mieux découper la logique de fonctionnement de l'application en émettant des évènements lorsque certaines opérations sont faites. Il sera ensuite possible d'écouter lorsque ces évènements seront émis pour ajouter de la logique par dessus.

Évènements

La génération d'évènement peut se faire à l'aide de la commande artisan :

php artisan make:event LoginEvent

Cet évènement va se construire comme un objet classique et on pourra préciser les éléments nécessaire à sa construction. Ensuite, lorsqu'on le souhaite on peut émettre cet évènement à l'aide de la méthode dispatch() ou via la méthode globale event()

event(new LoginEvent($user));

Écouteurs

Maintenant que nos évènements sont émis il faut pouvoir écouter leur déclenchement pour ajouter de la logique par dessus. Pour cela, il est possible d'utiliser 2 types de classes : Les listeners et les subscribers.

Les écouteurs sont associés à un évènement.

php artisan make:listener SendLoginNotification --event=LoginEvent

Il faudra aussi modifier le EventServiceProvider pour associer l'écouteur à l'évènement concerné à l'aide de la propriété protégées $listen.

protected $listen = [
   LoginEvent::class => [
     SendLoginNotification::class,
   ],
];

Subscriber

Les "subscribers" vont pouvoir définir la liste des évènements qu'ils écoutent et peuvent aussi contenir les actions à effectuer (pas nécessairement).

<?php

namespace App\Listeners;

use Illuminate\Auth\Events\Login;
use Illuminate\Auth\Events\Logout;
use Illuminate\Events\Dispatcher;

class UserEventSubscriber
{
    public function handleUserLogin(string $event): void {}

    public function handleUserLogout(string $event): void {}

    public function subscribe(Dispatcher $events): array
    {
        return [
            Login::class => 'handleUserLogin',
            Logout::class => 'handleUserLogout',
        ];
    }
}

Ensuite on modifiera le EventServiceProvider pour ajouter notre subscriber.

protected $subscribe = [
    UserEventSubscriber::class,
];
Publié
Technologies utilisées
Auteur :
Grafikart
Partager