X

Laravel 5.0 – Génération d’événements manquants


Parfois, cela peut sembler beaucoup de travail pour créer un événement, créer son gestionnaire et lier les deux. Créez une commande, créez son gestionnaire, liez les deux. J’ai souvent souhaité un flux de travail qui gère l’ensemble du processus en un seul.

Les commandes artisanales pour générer des commandes et des événements sont un bon début – elles créent toutes deux leur propre entité et (éventuellement) son gestionnaire. Mais vous pouvez toujours passer une heure à écrire la commande et le gestionnaire, puis perdre encore 15 minutes à essayer de comprendre pourquoi cela ne fonctionne pas, pour vous rendre compte que vous n’avez jamais vraiment bondir les deux ensemble.

Entrez l’événement : générer

Eh bien, cher lecteur, votre attente acharnée est enfin terminée. Dans Laravel 5, vous pouvez lier des événements et des gestionnaires (inexistants) dans le EventServiceProvidercourir php artisan event:generateet Artisan générera automatiquement les fichiers pour vous, à la fois pour l’événement et son gestionnaire.

Arangez-vous pour que cela arrive

Consultez nos répertoires d’événements et de gestionnaires avant :

app/
    Events/
        Event.php
    Handlers/
        Events/

1) Ouvrir app/providers/EventServiceProvider.php. Trouvez le $listen propriété, qui est l’endroit où vous lieriez normalement vos événements, et ajoutez-en un au format suivant :

    protected $listen = [
        DidSomethingEvent::class => [
            RespondOneWay::class,
            RespondAnotherWay::class
        ]
    ];

2) Courir php artisan event:generate

3) Bénéfice.

Vérifiez-le.

app/
    Events/
        Event.php
        DidSomethingEvent.php
    Handlers/
        Events/
            RespondOneWay.php
            RespondAnotherWay.php

Créé. Bondir. Prêt à partir. Même dactylographié :

<?php namespace App\Handlers\Events;
...
class RespondOneWay {
    ...
    public function handle(DidSomethingEvent $event)
    {
    }
}

C’était facile, non ?

Ouais, c’est ça. Vous pouvez maintenant concevoir votre système d’événements de manière abstraite – vous pouvez planifier le tout sans écrire une seule commande ou un seul gestionnaire. Et une fois que vous êtes prêt à partir, générez tous vos événements et gestionnaires en une seule commande.