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

时间:2014-12-09 08:27:42

标签: events laravel laravel-4 dependency-injection

我使用存储库模式。如果我想在我的控制器中使用repistory(例如UserRepository),我只需在我的控制器中注入存储库

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,我该怎么办?

1 个答案:

答案 0 :(得分:0)

只需在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');
 }