我试图在Laravel中注册一些事件事件订阅者。我正在使用IoC将依赖项注入到类中,但我似乎无法使其工作。这是我的事件服务提供商中的register()
方法:
public function register()
{
$this->app->events->subscribe($this->app->make('Edcs\Events\AuthEventSubscriber'));
}
我也尝试过:
public function register()
{
$this->app->events->subscribe('Edcs\Events\AuthEventSubscriber');
}
我在使用此代码时遇到ReflectionException
异常。我AuthEventSubscriber
的构造函数如下所示:
public function __construct(Hash $hash, Auth $auth)
{
$this->hash = $hash;
$this->auth = $auth;
}
我也在该类中包含了正确的命名空间:
use Illuminate\Hashing\HasherInterface as Hash;
use Illuminate\Auth\AuthManager as Auth;
所以我猜测在register()
方法解雇时没有加载依赖项 - 在Laravel中将依赖项注入事件订阅者的正确方法是什么?我也尝试过使用闭包和手动构建类,但这似乎也不起作用。
答案 0 :(得分:1)
我发现我正在错误地注册事件 - 使用上述方法必须在请求生命周期中过早地构建类。这是我现在使用的代码:
public function register()
{
$this->app->before(function() {
$this->app->events->subscribe($this->app->make('Edcs\Events\AuthEventSubscriber'));
});
}