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 EventServiceProvider
courir php artisan event:generate
et 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.