事件和监听器概念事件:执行一个动作或处理某事,例如“送货”。Listener:监听某个事件的发生,从而触发一系列相应的动作,比如发货后向用户发送“已发货”通知消息,增加发货数量的统计等。一般来说,一个事件可以对应多个监听器,但一个监听器只监听一个事件。主目录app/Events:存放事件类的目录app/Listeners:存放监听器类的目录App/Providers/EventServiceProvider:事件服务提供者,用于注册事件监听器,声明事件与监听器的绑定关系首先在event在服务提供者中声明事件和监听器的绑定关系:protected$listen=[//ordershippingevent'App\Events\OrderShipped'=>[//发送发货通知的监听器'App\Listeners\SendShipmentNotification',//用于增加发货数量的监听器'App\Listeners\AddShipmentCount',],];然后,可以使用命令生成对应的事件和监听文件:phpartisanevent:generateLaravel提供了自动事件发现功能,原理是通过反射扫描app/Listeners监听目录找到事件监听,然后使用依赖注入类型的事件监听器,寻找事件绑定关系进行注册。该功能默认是关闭的,使用前需要在EventServiceProvider中手动开启。定义事件order=$order;}}定义监听器user=$user;}publicfunctionhandle(OrderShipped$event){//执行发送短信等操作\Log::info($event->order->id);}}在业务逻辑中触发事件
