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

Php 为什么laravel事件侦听器需要通配符?,php,laravel,events,laravel-5,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 = [])

这项工作:

     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";
     });
为什么呢?第一个输出<代码>事件:Illumb\Console\Events\ArtisStarting,第二个输出错误消息<代码>类Illumb\Console\Events\ArtisStarting的对象无法转换为字符串。两者的工作方式应该相同。为什么需要通配符?我是否注册了错误的事件侦听器?

来自:

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


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

如果由于ur echo而出现错误,请尝试打印($event);在我们的第二个例子中。@arunkumar啊,是的,这使它将事件检测为对象而不是字符串;我真傻,没注意到。但是,问题仍然是,为什么通配符会导致这种变化?