为了账号安全,请及时绑定邮箱和手机立即绑定

laravel 事件监听中的code如何编写更合理

laravel 事件监听中的code如何编写更合理

慕斯709654 2019-05-13 09:28:10
初次使用laravel的事件监听功能,想要实现如下业务逻辑,请教如何编写合理的代码!//controllercodesclassOrderControllerextendsController{functioncreate(){//dosomething...event(newOrderWasCreated($order_id));}}//apicodesclassApiControllerextendsController{functionsendEmail(){//dosomething...}}//ListenerscodesclassSendEmail{publicfunctionhandle(OrderWasCreated$event){//sendemail...}}有如上三段代码,现在就是想实现当订单创建时在监听器中发送邮件的业务逻辑,不过我不太清楚应该将处理邮件发送的代码写在哪里比较合适?于是我创建了一个api做处理,应该如何与监听器关联呢???
查看完整描述

2 回答

?
梦里花落0921

TA贡献1772条经验 获得超6个赞

如果是我的话,我会这么做
首先先创建一个OrderCreated的事件
再创建一个OrderCreatedListener,监听OrderCreated事件
再创建一个OrderCreatedNotification,用于处理订单创建的通知
最后创建一个OrderCreatedMail,用于生成通知邮件
调用方式是控制器触发OrderCreated事件,OrderCreatedListener监听到事件,触发OrderCreatedNotification,OrderCreatedNotification再调用OrderCreateMail生成通知邮件,最后发送
这么做的好处
通知从监听器解耦。监听器不仅仅只做通知的功能,还可以做例如订单超时关闭等其他功能(当然也可以额外再创建一个Listener处理)。
通知非常易于扩展。后期可以非常方便的扩展通知频道,比如App通知、短信通知等。
Mail与通知解耦。通知里面可以根据用户类型,调用不同的通知邮件,例如针对VIP用户和普通用户,调用不同的Mail类模板,生成不同的Mail。
题主可以根据自己的业务复杂程度进行相应的增减步骤
                            
查看完整回答
反对 回复 2019-05-13
?
繁花如伊

TA贡献2012条经验 获得超12个赞

一般在Listeners里面就可以完成发送邮件了,你想用api的话,可以把api作为全局的helper来用,或者use../Api,然后在SendEmailhandle方法newApi()调用
                            
查看完整回答
反对 回复 2019-05-13
  • 2 回答
  • 0 关注
  • 467 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信