为什么 Laravel 5.4 会在此处抛出类型错误?

Why is Laravel 5.4 throwing a Type error here?

我的App\Providers\EventServiceProvider里有这个:

protected $listen = [
    'Illuminate\Auth\Events\Login' => [
      'App\Listeners\UserLogin'
    ],
];

这在我的 App\Listeners\UserLogin.php:

use App\Events\UserLoggedIn;

class UserLogin
{
  public function handle(UserLoggedIn $event)
  {
    ...
  }
}

但是当我尝试登录时出现此错误:

Type error: Argument 1 passed to App\Listeners\UserLogin::handle() must be an instance of App\Events\UserLoggedIn, instance of Illuminate\Auth\Events\Login given.

谁能告诉我为什么会出现这个错误?

您的 protected $listen 数组调用错误 class。

您需要为其指定事件的名称class,然后是听众列表。

protected $listen = [
   'App\Events\UserLoggedIn' => [
     'App\Listeners\UserLogin'
   ],
];