我正在尝试向服务提供商注册事件,但我不断收到反射类错误.我搜索过并找不到解决方案,也许这是核心问题.
// AppServiceProvider.php
<?php namespace App;
use Illuminate\Support\ServiceProvider;
use App\Events\UserEventHandler;
class AppServiceProvider extends ServiceProvider {
public function register() {
// Events
$this->app->events->subscribe(new UserEventHandler);
}
}
// UserEventHandler.php
<?php namespace App\Events;
class UserEventHandler {
/**
* Handle user login events.
*/
public function onUserLogin($event)
{
echo 'subscriber logged in'; exit;
}
/**
* Register the listeners for the subscriber.
*
* @param Illuminate\Events\Dispatcher $events
* @return array
*/
public function subscribe($events)
{
$events->listen('auth.login', 'UserEventHandler@onUserLogin');
}
}
Run Code Online (Sandbox Code Playgroud)
$this->app->events->subscribe(new UserEventHandler);正好点火,因为我可以到达subscribe方法,但是 $events->listen('auth.login', 'UserEventHandler@onUserLogin');返回异常Class UserEventHandler does not exist
我在global.php上尝试了相同的代码并且工作正常,所以问题出在ServiceProvider上,我尝试了两种方法register()和boot()并得到了同样的错误.
[更新]
我发现在监听事件时你需要专门指定完整的命名空间.
public function subscribe($events)
{
$events->listen('auth.login', 'App\Events\UserEventHandler@onUserLogin');
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
893 次 |
| 最近记录: |