为什么Laravel活动听众需要通配符



这有效:

     Event::listen('IlluminateConsoleEventsArtisanStartin*', function ($event, $data = []) {
         echo "event: $eventn";
     });

,但这会产生一个错误:

     Event::listen('IlluminateConsoleEventsArtisanStarting', function ($event, $data = []) {
         echo "event: $eventn";
     });

为什么?第一个输出event: IlluminateConsoleEventsArtisanStarting,第二个产生错误消息Object of class IlluminateConsoleEventsArtisanStarting could not be converted to string。两个都应该以相同的方式工作。为什么需要通配符?我是否错误地注册了侦听器?

来自官方文档:

通配符听众将事件名称作为他们的第一个论点,并且 整个事件数据数组作为其第二个参数。

如果您希望在侦听器中使用"常规"事件的事件名称,则在派遣时必须手动通过它。在通配符的听众中,事件名称将自动传递。

最新更新