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

use*_*986 9 event-listener event-handling laravel laravel-5

我对事件听众之间的差异感到有点困惑.

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

它们在我定义它们之后工作 Providers\EventServiceProvider.php

protected $listen = [
    UserHasSignedUp::class => [
        SendWelcomeEmail::class,
        SendAdminEmail::class
    ]
];
Run Code Online (Sandbox Code Playgroud)

那么听众是什么?

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

Eze*_*eno 16

在你的例子中UserHasSignedUp是一个Event.SendWelcomeEmail并且SendAdminEmail两个侦听器"等待"事件UserHasSignedUp被触发,并且它们应该在handle每个方法的方法上实现所需的业务逻辑.

超级简单的例子:

UserController中的某个地方

Event::fire(new UserHasSignedUp($user)); //UserHasSignedUp is the event being fired
Run Code Online (Sandbox Code Playgroud)

SendWelcomeEmail类

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

正如您所看到的,每个事件都可以有多个侦听器,但是侦听器无法侦听多个事件.如果你想让一个类听很多事件,你应该看看事件订阅者

希望能帮助到你.

  • 这没有解决这个问题.在laravel事件处理程序和事件监听器是两个单独的事情.只需检查`php artisan list`,看看你可以使用artisan来生成.问题(以及我在互联网上找不到的生活中的问题)有什么区别? (2认同)