Laravel listener listen to multiple event -


so according laravel event doc, when defining listeners, can receive event instance in handle method , perform logic necessary:

public function handle(foodwaspurchased $event) 

so if foodwaspurchased event defined below (assumed eventserviceprovider set):

public function __construct(food $food) {     $this->food = $food; } 

i access $food in event listener doing:

$event->food->dosomething(); 

but question if listener listen multiple events?

event foodwaspurchased -> listener bill event drinkswaspurchased -> listener bill 

what did did not specify event instance in listener handle method:

public function handle($event) 

where can later use if condition check received in $event:

if (isset($event->food)) {      // something...  } elseif (isset($event->drinks)) {      // else...  } 

i'm sure there better way.

or best practice ensure 1 listener listens 1 single event ?

you can listen multiple events using event subscribers placed in listeners folder capable of listening multiple events.

<?php  namespace app\listeners;  class usereventlistener{     /**      * handle user login events.      */     public function onuserlogin($event) {}      /**      * handle user logout events.      */     public function onuserlogout($event) {}      /**      * register listeners subscriber.      *      * @param  illuminate\events\dispatcher  $events      * @return array      */     public function subscribe($events){         $events->listen(             'app\events\userloggedin',             'app\listeners\usereventlistener@onuserlogin'         );          $events->listen(             'app\events\userloggedout',             'app\listeners\usereventlistener@onuserlogout'         );     }  } 

Comments