thinkphp6中使用监听事件和事件订阅

目录

一:场景介绍

二:事件监听

三:配置订阅


一:场景介绍

在项目开发中有很多这样的场景,比如用户注册完了,需要通知到第三方或者发送消息。用户下单了,需要提示给客服等等。这些场景都有一个共同的特点是主流程和通知流程可以完全分离。通知流程是成功和失败不能影响到主流程。那么在thinkphp6中怎么实现这样的逻辑呢?可以使用事件订阅和事件监听。

二:事件监听

事件类可作为保存与事件相关信息的容器,如没有额外需求可以不需要定义

事件系统的所有操作都通过think\facade\Event类进行静态调用

1:配置监听
 

// 在event.php中绑定事件标识
'bind' => [
     'order_info' => \app\event\Order::class
 ],
// 一个事件可以有很多不相关的监听器   
'listen' => [
   'order_info' => [
       \app\listener\ListenerUser::class,
       \app\listener\ListenerGoods::class
   ]
],

// 或者可以这样动态绑定

Event::bind(['order_info' => \app\event\Order::class]);

// 以下方式都可以触发事件
Event::trigger('order_info');
Event::trigger(\app\event\Order::class);
Event::trigger(new \app\event\Order('Order初始化'));

不定义事件类时
'bind' => [
     
 ],

'listen' => [
   'order_info' => [
       \app\listener\ListenerUser::class,
       \app\listener\ListenerGoods::class
   ]
],

// 以下方式触发事件

Event::trigger('order_info');

// 这样就可以触发事件
Event::trigger(\app\event\Order::class);
Event::trigger(new \app\event\Order('Order初始化'));

三:配置订阅

我们以用户注册为例,详细介绍了配置流程。这里的场景是我们需要在用户注册完,把用户信息推送到第三方平台。

1:首先注册事件订阅者

app目录下的event.php,我们定义一个用户的类,里面可以写和用户有关的订阅方法

也可以动态注册

Event::subscribe(\app\subscribe\SubscribeUser::class);

这里的类,可以定义多个,每个订阅类在这里注册以后,都可以实现监听

2: 写用户注册的推送逻辑

通过事件订阅机制,在一个监听器中监听多个事件,这里用户注册完可以定义推送逻辑,还可以定义其他逻辑,多个方法都可以监听到。

3:员工注册事件


    event('delete_user', ['ids' => $idArr,'user_arr' => $listArr]);

或者

Event::trigger('delete_user');

  • 23
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

攻城狮的梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值