2015-05-19 18 views
6

Jestem nieco zdezorientowany różnicą między Wydarzenia i Słuchacze.Laravel 5 - Zamieszanie między manipulatorami zdarzeń a słuchaczami

Zrozumiałem, jak możesz tworzyć swoje wydarzenia pod numerem Events, a następnie zarejestruj je i zaimplementuj Handlery w Handlers\Events. Tak więc mam wydarzenia i obsługę wydarzeń.

Pracują po tym, jak je zdefiniować w Providers\EventServiceProvider.php

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

Więc jakie są Słuchaczy?

Dla mnie wyglądają dokładnie tak samo jak Event Handlers?

Odpowiedz

14

W twoim przykładzie UserHasSignedUp jest Event. SendWelcomeEmail i SendAdminEmail są dwoma słuchaczami "oczekującymi" na uruchomienie zdarzenia UserHasSignedUp i powinni zaimplementować wymaganą logikę biznesową w metodzie handle dla każdego z nich.

Super prosty przykład:

Gdzieś w UserController

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

SendWelcomeEmail klasa

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

Jak widać, każde zdarzenie może mieć wielu słuchaczy, ale słuchacz mogę słuchać więcej niż pojedyncze wydarzenie. Jeśli chcesz słuchać wielu wydarzeń w klasie, powinieneś spojrzeć na Event Subscribers

Mam nadzieję, że to pomoże.

+0

Ah Myślę, że pomyliłem się, ponieważ utworzyłem folder Listeners, ale to nie jest część Laravel 5, dlatego nie rozumiem różnicy między/Handlers/Events i/Listeners – user391986

+0

ah widzę! Mam nadzieję, że moja odpowiedź pomogła =) –

+0

Cześć Ezequiel, jeszcze jedno pytanie, trochę mnie to zakłopotało, gdy zobaczyłem wideo z Laracon (październik 2014), w którym używają zdarzenia -> podnieść i wydarzenie -> uwolnić metodę, czy to nadal jest droga to zrobić czy zmieniło się to od kiedy? https://youtu.be/2_380DKU93U?t=2034 – user391986

0

Nie ma zbyt wielu informacji na ten temat, więc może to być tylko spekulacja. Spojrzałem na this video i zobaczyłem, że można używać funkcji obsługi za pomocą poleceń. Myślę, że jeśli używasz poleceń, ma to sens, aby mieć wszystkie programy obsługi w jednym miejscu. Jednakże, jeśli nie, to posiadanie App\Handlers\Events\Whatever może nie być tak pożądane, jak App\Listeners\Whatever.

0

Słuchaczy vs. Rączki:

słuchacz listen dla określonego zdarzenia mają być zwolniony. xxxxCreatedListener będzie nasłuchiwał tylko dla xxxx

Program obsługi może obsługiwać wiele zdarzeń, które mają zostać uruchomione. Na przykład, załóżmy, że używasz wykonywania operacji CRUD, twój handler może czekać na xxxxCreatedEvent, xxxxDeletedEvent, xxxxUpdatedEvent.

Powiązane problemy