laravel事件&监听
1、事件&监听 理解
- Laravel 的事件提供了一个简单的观察者实现,能够订阅和监听应用中发生的各种事件。事件机制是一种很好的应用解耦方式,因为一个事件可以拥有多个互不依赖的监听器。
- Laravel事件即某个动作,类似js的按钮(点击、双击、滑动)等动作,设置监听后,当事件达成条件时触发监听行为。
- 以下例子:用户下单(事件),扣减库存(监听行为)
2、生成事件
copyphp artisan event:generate
#执行后会生成`app/Events`和`app/Listeners`目录
php artisan make:event DeductionStockEvent
#生成事件
php artisan make:listener DeductionStockListener
#生成监听
3、给事件安装监听器
app/Providers/EventServiceProvider.php
$listen属性增加事件和监听
copyprotected $listen = [
'App\Events\Event' => [
'App\Listeners\EventListener',
],
'App\Events\DeductionStockEvent' => [
'App\Listeners\DeductionStockListener',
],
];
4、事件参数
app/Events/DeductionStockEvent.php
copypublic $userName;
public $goodsSn;;
public $qty;
public function __construct(string $userName, string $goodsSn, int $qty)
{
$this->userName = $userName;
$this->goodsSn = $goodsSn;
$this->qty = $qty;
}
5、监听器处理业务逻辑
app\Listeners\DeductionStockListener.php
copypublic function handle(Event $event)
{
//--处理业务逻辑
//接收事件参数
$userName = $event->userName ?? '';
$goodsSn = $event->goodsSn ?? '';
$qty = $event->qty ?? 0;
Log::info($userName.' -- '.$goodsSn.' -- '.'扣减库存' .' -- '.$qty);
}
6、调用事件触发监听行为
copyevent(new \App\Events\DeductionStockEvent('张三','白衬衫',2));
7、结果
storage/logs/laravel.log
copy[2022-05-08 15:02:19] local.INFO: 张三 -- 白衬衫 -- 扣减库存 -- 2
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?