为什么laravel事件监听器需要通配符?

时间:2018-02-20 10:05:57

标签: php laravel events laravel-5

这有效:

     Event::listen('Illuminate\Console\Events\ArtisanStartin*', function ($event, $data = []) {
         echo "event: $event\n";
     });

但这会产生错误:

     Event::listen('Illuminate\Console\Events\ArtisanStarting', function ($event, $data = []) {
         echo "event: $event\n";
     });

为什么?第一个输出event: Illuminate\Console\Events\ArtisanStarting,第二个输出错误消息Object of class Illuminate\Console\Events\ArtisanStarting could not be converted to string。应该以同样的方式工作。为什么需要通配符?我是否错误地注册了事件监听器?

1 个答案:

答案 0 :(得分:0)

来自offical docs

  

通配符侦听器将事件名称作为其第一个参数,并且   整个事件数据数组作为第二个参数。

如果希望在侦听器中使用“常规”事件的事件名称,则在分派它时必须手动传递它。在通配符侦听器中,事件名称会自动传递。