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
Post a Comment