小编Par*_*Lai的帖子

Laravel听众听多个事件

因此,根据laravel事件文档,在定义侦听器时,它可以在其handle方法中接收事件实例并执行任何必要的逻辑:

public function handle(FoodWasPurchased $event)
Run Code Online (Sandbox Code Playgroud)

因此,如果我的FoodWasPurchased事件定义如下(假设设置了EventServiceProvider):

public function __construct(Food $food)
{
    $this->food = $food;
}
Run Code Online (Sandbox Code Playgroud)

我可以通过以下方式从听众那里获取$ food

$event->food->doSomething();
Run Code Online (Sandbox Code Playgroud)

但现在我的问题是如果听众听多个事件怎么办?

Event FoodWasPurchased -> Listener Bill
Event DrinksWasPurchased -> Listener Bill
Run Code Online (Sandbox Code Playgroud)

我现在做的是我没有在监听器句柄方法中指定事件实例:

public function handle($event)
Run Code Online (Sandbox Code Playgroud)

我可以在以后使用if条件来检查$ event中收到的内容:

if (isset($event->food)) {

    // Do something...

} elseif (isset($event->drinks)) {

    // Do something else...

}
Run Code Online (Sandbox Code Playgroud)

我相信有更好的方法.

或者最佳做法是确保一个监听器只监听一个事件?

events laravel laravel-5

14
推荐指数
4
解决办法
1万
查看次数

标签 统计

events ×1

laravel ×1

laravel-5 ×1