2015-05-19 20 views
6

Sono un po 'confuso circa la differenza tra Eventi e ascoltatori.laravel 5 - Confusione tra gestori di eventi e ascoltatori

Ho capito come è possibile creare i tuoi eventi sotto Events quindi registrarli e implementare gli handler in Handlers\Events. Quindi qui ho eventi e la gestione degli eventi.

Lavorano dopo che li definisco in Providers\EventServiceProvider.php

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

Quindi quali sono ascoltatori?

Per me sembrano esattamente la stessa cosa di Event Handler?

risposta

14

Nel tuo esempio UserHasSignedUp è un Event. SendWelcomeEmail e SendAdminEmail sono due ascoltatori "in attesa" per l'evento UserHasSignedUp per essere licenziato e dovrebbero implementare la logica di business necessaria a handle metodo di ciascuno.

Super semplice esempio:

Da qualche parte in UserController

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

SendWelcomeEmail classe

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

Come si può vedere, ogni evento può avere più ascoltatori, ma un ascoltatore sopraelevazione ascoltare più di un singolo evento. Se vuoi una lezione che ascolti molti eventi, dovresti dare un'occhiata a Event Subscribers

Spero che sia d'aiuto.

+0

Ah penso di essermi confuso perché avevo creato una cartella Listeners ma in realtà non fa parte di Laravel 5 è per questo che non ho capito la differenza tra/Handler/Events e/Listeners – user391986

+0

ah capisco! spero che la mia risposta abbia aiutato =) –

+0

Ciao Ezequiel, un'altra domanda Sono diventato un po 'più confuso quando ho visto il video di Laracon (ottobre 2014) in cui usano l'evento -> raise ed event -> metodo di rilascio, è ancora così farlo o è cambiato da allora? https://youtu.be/2_380DKU93U?t=2034 – user391986

0

Non c'è troppe informazioni su questo là fuori, quindi questo potrebbe essere solo speculazione. Ho dato un'occhiata a this video e ho visto che puoi usare i gestori con i comandi. Penso che se stai usando i comandi, è logico avere tutti i tuoi gestori in un punto. Tuttavia, se non lo sei, avere un App\Handlers\Events\Whatever potrebbe non essere desiderabile come App\Listeners\Whatever.

0

ascoltatori vs. Handlers:

un ascoltatore listen per un evento specifico per essere licenziati. xxxxCreatedListener ascolterà solo per xxxx

Un gestore in grado di gestire più eventi di essere licenziato. Ad esempio, supponiamo che tu stia utilizzando le operazioni CRUD, che il gestore possa attendere xxxxCreatedEvent, xxxxDeletedEvent, xxxxUpdatedEvent.