Laravel 5 - 事件处理程序和监听器之间的混淆

标签 laravel event-handling laravel-5 event-listener

我对事件监听器之间的区别有点困惑。

我了解了如何在 Events 下创建事件然后注册它们并在 Handlers\Events 中实现处理程序。所以这里我有事件和事件的处理。

我在Providers\EventServiceProvider.php中定义它们后它们就起作用了

protected $listen = [
    UserHasSignedUp::class => [
        SendWelcomeEmail::class,
        SendAdminEmail::class
    ]
];

那么什么是监听器

对我来说,它们看起来与事件处理程序完全相同?

最佳答案

在您的示例中,UserHasSignedUp 是一个EventSendWelcomeEmailSendAdminEmail 是两个“等待”事件 UserHasSignedUp 被触发的监听器,它们应该在每个监听器的 handle 方法中实现所需的业务逻辑一个。

super 简单的例子:

UserController 中的某处

Event::fire(new UserHasSignedUp($user)); //UserHasSignedUp is the event being fired

SendWelcomeEmail 类

class SendWelcomeEmail //this is the listener class
{
    public function handle(UserHasSignedUp $event) //this is the "handler method"
    {
        //send an email
    }   
}

如您所见,每个事件可以有多个监听器,但一个监听器不能监听多个事件。 如果你想让一个类监听很多事件,你应该看看Event Subscribers

希望有帮助。

关于Laravel 5 - 事件处理程序和监听器之间的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30336337/

相关文章:

php - Laravel:如何获取表列名称、类型和长度

php - laravel 多次插入到 MySQL

php - InvalidArgumentException 未找到 View [登录]

Laravel 5 GET 正在运行,但 POST 方法不起作用

javascript - ASP.net/Javascript : Automatically postback triggering and next control to have focus

javascript - jQuery - 检测是否已选择 HTML 选择选项的事件处理程序

php - 流明路由缓存不起作用

php - 如何使用 laravel mail 和 gmail 转义 & 符号

php - Laravel-代客404未找到

c# - 单击动态用户控件中的控件时未触发单击事件