我目前正在决定是否应该使用事件:
没有事件:
function receiveOrder($order) {
// ... do stuff
orderReceived($order);
}
function orderReceived($order) {
doSomeProcessing($order)
sendEmail($order)
}
function doSomeProcessing($order) {
}
function sendEmail($order) {
}
事件(这不是实际代码,只是语义结构)
function receiveOrder($order) {
// ... do stuff
event.emit('orderreceived', $order);
}
event.listen('orderreceived', doSomeProcessing);
event.listen('orderreceived', sendEmail);
function doSomeProcessing($order) {
}
function sendEmail($order) {
}
使用这些活动有什么好处。我知道如果我希望其他人灵活使用我的包装会更好。这样他们就可以挂钩到receiveOrder函数而无需修改它。但假设我不想将代码作为一个包提供(这可能是大多数laravel项目的情况)。我为什么要使用活动?
编辑:
我不喜欢事件的原因是它破坏了IDE的自动完成和类解析,并且调试/查找副作用也更加困难。
答案 0 :(得分:1)
你是对的,
事件允许您分离应用程序问题并创建一种机制来挂钩应用程序中的操作