thinkphp5.x如何像thinkphp6.x那样使用事件_观察者模式

thinkphp5.x没有像thinkphp6.x那样有封装了事件方法,也就没有办法直接event("事件")来调用

如果遇到复杂的逻辑想使用观察者模式就可以自己封装事件方法

在config目录里添加event.php用于指定事件目录:

<?php

return [
    'listen' =>[
          \app\event\OrderRefund::class=>[
              \app\listener\orderRefund\PartOrderRefund::class, 
              \app\listener\orderRefund\AllOrderRefund::class 
          ]
    ]
];

在common.php里面封装 event方法

function event($event)
{
    $eventList = config("event.listen");
    if (!is_object($event)) {
        $event = new $event();
    }
    $eventKey = get_class($event);
    if (!class_exists($eventKey)) throw new \Exception('事件类不存在!');
    foreach ($eventList[$eventKey] as $listener => $class) {
        if (!class_exists($class)) throw new \Exception('监听类不存在!');
        $obj = new $class();
        if (!method_exists($class, "handle")) throw new \Exception('监听方法不存在!');
        $obj->handle($event);
    }
}

于是就可以用过调用event(class名称) 来试用事件,就能用到thinkphp5.x的观察着模式 也有点类似 管道模式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值