注入依赖关系时的Laravel ReflectionException

时间:2014-10-23 20:12:17

标签: laravel-4 dependency-injection dependencies inversion-of-control ioc-container

我试图在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中将依赖项注入事件订阅者的正确方法是什么?我也尝试过使用闭包和手动构建类,但这似乎也不起作用。

1 个答案:

答案 0 :(得分:1)

我发现我正在错误地注册事件 - 使用上述方法必须在请求生命周期中过早地构建类。这是我现在使用的代码:

public function register()
{
    $this->app->before(function() {
         $this->app->events->subscribe($this->app->make('Edcs\Events\AuthEventSubscriber'));
    });
}