您现在的位置是:首页 >学无止境 >event网站首页学无止境
event
简介event
1.定义事件类
事件(Event):代表应用程序中特定的动作或状态变化,是一种信号机制。
# 创建事件类 app/event下文件
php artisan make:event ActivityPackageEvent
<?php
namespace AppEvents;
class ActivityPackageEvent
{
public function __construct( $args)
{
$this->activity = $args[0];
$this->order = $args[1];
$this->package = $args[2];
}
}
2.定义监听类
监听器(Listener):负责处理事件的代码逻辑单元。当特定事件被触发时,与之关联的监听器会执行相应的操作。
# 创建监听器类并关联到指定事件
php artisan make:listener ActivityPackageListener --event=ActivityPackageEvent
<?php
use IlluminateContractsQueueShouldQueue;
class ActivityPackageListener implements ShouldQueue
{
public function handle($event)
{
Log::error('异步操作');
$package = $event->package;
$order = $event->order;
$activity = $event->activity;
//逻辑处理
}
}
3.注册时间和监听器
<?php
namespace AppProviders;
use IlluminateFoundationSupportProvidersEventServiceProvider as ServiceProvider;
class EventServiceProvider extends ServiceProvider
{
protected $listen = [
'ModulesActivityEventsActivityPackageEvent' => [
'ModulesActivityListenersActivityPackageListener',
],
];
public function boot()
{
parent::boot();
}
}
4. 触发事件
在应用程序的任意位置,你都可以使用 event 辅助函数来触发事件
event(new ModulesActivityEventsActivityPackageEvent([$activity, $order, $package]));
不继承 ShouldQueue 接口:同步执行
继承 ShouldQueue 接口:异步执行。将任务推送至队列执行。
php artisan queue:work
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。





U8W/U8W-Mini使用与常见问题解决
QT多线程的5种用法,通过使用线程解决UI主界面的耗时操作代码,防止界面卡死。...
stm32使用HAL库配置串口中断收发数据(保姆级教程)
分享几个国内免费的ChatGPT镜像网址(亲测有效)
Allegro16.6差分等长设置及走线总结