2015-05-19 3 views
6

Ich bin etwas verwirrt über die Unterschiede zwischen Events und Listener.Laravel 5 - Verwechslung zwischen Event-Handlern und Listener

Ich habe verstanden, wie Sie Ihre Ereignisse unter Events erstellen, dann registrieren Sie sie und implementieren Sie die Handler in Handlers\Events. Also hier habe ich Ereignisse und den Umgang mit Ereignissen.

Sie arbeiten, nachdem ich sie in Providers\EventServiceProvider.php

protected $listen = [ 
    UserHasSignedUp::class => [ 
     SendWelcomeEmail::class, 
     SendAdminEmail::class 
    ] 
]; 

So definieren, was sind Hörer?

Für mich scheinen sie genau das gleiche wie Event Handlers?

Antwort

14

In Ihrem Beispiel UserHasSignedUp ist ein Event. SendWelcomeEmail und SendAdminEmail sind zwei Listener, die darauf warten, dass das Ereignis UserHasSignedUp ausgelöst wird, und sie sollten die erforderliche Geschäftslogik unter der Methode handle implementieren.

extrem einfaches Beispiel:

Irgendwo in Usercontroller

Event::fire(new UserHasSignedUp($user)); //UserHasSignedUp is the event being fired 

SendWelcomeEmail Klasse

class SendWelcomeEmail //this is the listener class 
{ 
    public function handle(UserHasSignedUp $event) //this is the "handler method" 
    { 
     //send an email 
    } 
} 

Wie Sie sehen können, jedes Ereignis kann mehrere Zuhörer, aber ein Zuhörer kann nicht mehr hören als ein einzelnes Ereignis. Wenn Sie möchten, dass eine Klasse auf viele Ereignisse hört, sollten Sie einen Blick auf Event Subscribers

Hope es hilft.

+0

Ah Ich glaube, ich hatte mich selbst verwirrt, weil ich einen Listener-Ordner erstellt hatte, aber das ist nicht wirklich Teil von Laravel 5, deshalb habe ich den Unterschied zwischen/Handlers/Events und/Listeners nicht verstanden – user391986

+0

ah ich sehe! hoffe meine antwort half =) –

+0

Hallo Ezequiel, noch eine Frage Ich habe ein bisschen mehr verwirrt als ich das Video von Laracon (Oktober 2014) gesehen habe, wo sie die Event -> Raise und Event -> Release Methode verwenden, ist das immer noch der Weg oder hat sich das geändert? https://youtu.be/2_380DKU93U?t=2034 – user391986

0

Da gibt es nicht zu viele Informationen darüber, also könnte dies nur Spekulation sein. Ich schaute auf this video und sah, dass Sie Handler mit Befehlen verwenden können. Ich denke, wenn Sie Befehle verwenden, ist es sinnvoll, alle Ihre Handler an einer Stelle zu haben. Wenn Sie es nicht sind, ist App\Handlers\Events\Whatever möglicherweise nicht so wünschenswert wie App\Listeners\Whatever.

0

Hörer gegen Handlers:

Ein Zuhörer listen für ein bestimmtes Ereignis ausgelöst werden. xxxxCreatedListener überwacht nur xxxx

Ein Handler kann mehrere Ereignisse behandeln, die ausgelöst werden. Nehmen wir beispielsweise an, Sie verwenden CRUD-Operationen, Ihr Handler könnte auf xxxxCreatedEvent, xxxxDeletedEvent, xxxxUpdatedEvent warten.

Verwandte Themen