初次使用laravel的事件监听功能,想要实现如下业务逻辑,请教如何编写合理的代码!
//controller codes
class OrderController extends Controller
{
function create()
{
//do something ...
event(new OrderWasCreated($order_id));
}
}
//api codes
class ApiController extends Controller
{
function sendEmail()
{
//do something ...
}
}
//Listeners codes
class SendEmail
{
public function handle(OrderWasCreated $event)
{
//send email ...
}
}
有如上三段代码,现在就是想实现当订单创建时在监听器中发送邮件的业务逻辑,不过我不太清楚应该将处理邮件发送的代码写在哪里比较合适?于是我创建了一个api做处理,应该如何与监听器关联呢???
如果是我的话,我会这么做
首先先创建一个
OrderCreated
的事件再创建一个
OrderCreatedListener
,监听OrderCreated
事件再创建一个
OrderCreatedNotification
,用于处理订单创建的通知最后创建一个
OrderCreatedMail
,用于生成通知邮件调用方式是控制器触发
OrderCreated
事件,OrderCreatedListener
监听到事件,触发OrderCreatedNotification
,OrderCreatedNotification
再调用OrderCreateMail
生成通知邮件,最后发送这么做的好处
Listener
处理)。Mail
与通知解耦。通知里面可以根据用户类型,调用不同的通知邮件,例如针对VIP用户和普通用户,调用不同的Mail
类模板,生成不同的Mail
。题主可以根据自己的业务复杂程度进行相应的增减步骤