这有效:
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
。两个都应该以相同的方式工作。为什么需要通配符?我是否错误地注册了侦听器?
来自官方文档:
通配符听众将事件名称作为他们的第一个论点,并且 整个事件数据数组作为其第二个参数。
如果您希望在侦听器中使用"常规"事件的事件名称,则在派遣时必须手动通过它。在通配符的听众中,事件名称将自动传递。