Events 如何将存储库模式注入事件Laravel

Events 如何将存储库模式注入事件Laravel,events,laravel,laravel-4,dependency-injection,Events,Laravel,Laravel 4,Dependency Injection,我使用存储库模式。如果我想在我的控制器中使用repistory(例如UserRepository),我可以在我的控制器中简单地注入repository class SomeController extend BaseController public function __contruct(UserRepositoryInterface $user){ $this->user = $user; } 在本例中,laravel自动将存储库注入我的控制器

我使用存储库模式。如果我想在我的控制器中使用repistory(例如UserRepository),我可以在我的控制器中简单地注入repository

class SomeController extend BaseController
     public function __contruct(UserRepositoryInterface $user){
          $this->user = $user;
     }
在本例中,laravel自动将存储库注入我的控制器。但现在我想从事件对我的数据库进行一些操作。所以我想将UserRepository注入到我的事件中。我怎么做

 class UserHandlerEvent {
     public function onCreate($event){}
     public function subscribe($events){
         $event->listen('user.create', 'UserHandlerEvent@onCreate');
 }
这是我的事件,接下来我在EventServiceProvider中注册它。看起来像是

class EventServiceProvider extends ServiceProvider
{
    public function register(){
        $this->app->events->subscribe(new UserEventHandler());
    }
}

如果我想从我的事件访问UserRepository,我应该怎么做?

只需在UserHandlerEvent类中创建一个构造函数,并像在控制器中那样注入UserRepositoryInterface

class UserHandlerEvent {
 protected $user;
 public function __contruct(UserRepositoryInterface $user){
          $this->user = $user;
     }
     public function onCreate($event){}
     public function subscribe($events){
         $event->listen('user.create', 'UserHandlerEvent@onCreate');
 }

我的EventServiceProvider怎么了?我必须向UserHandlerEvent传递一些变量,我认为IOC容器将自己实例化UserRepository。您不必传递任何变量,只需尝试一下。