我使用存储库模式。如果我想在我的控制器中使用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,我该怎么办?
答案 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');
}