讨论 建站交流 在 ModStart 中使用 Event 事件监听来进行业务解耦

在 ModStart 中使用 Event 事件监听来进行业务解耦

Alan 发表于    阅读:405    回复:0

Laravel 中的事件通常用于业务解耦,比如注册成功后发邮件,短信,赠送优惠券,可以拆分代码,一个事件可以对应多个监听器,如果注册成功后同时发邮件,短信的话,可以只执行一个事件,调用不同的监听器。

在 ModStart 中,如何快速的使用 Event 时间监听?

我们以用户注册事件为例,定义事件类 MemberUserRegisteredEvent

class MemberUserRegisteredEvent
{    
    public $memberUserId;    
    public function __construct($memberUserId)
    {        
        $this->memberUserId = $memberUserId;
    }
}


在用户注册的地方触发用户注册事件(假设注册用户的 ID 为 5)

EventUtil::fire(new MemberUserRegisteredEvent(5));


在 ModuleServiceProvider 中监听事件

use Illuminate\Support\Facades\Event;
class ModuleServiceProvider extends ServiceProvider
{    public function boot(Dispatcher $events)
    {
        Event ::listen(
             MemberUserRegisteredEvent::class, 
             function (MemberUserRegisteredEvent $e) {                  
                 // 用户注册了
                 // $e->memberUserId
             }
        );
    }
}


这样就可以在事件处理中增加用户注册后的操作


我来评论
QQ
微信
客服