我想用以下参数解决上下文绑定:
$this->app->when(ParticipantAddedToWaitingList::class)
->needs(NotificationParamsResolverInterface::class)
->give(function ($event_id, $params = []) {
return new EventNotificationParamsResolver($event_id, $params);
});
使用这个:
app()->make(NotificationParamsResolverInterface::class, [123, [1,2,3]]);
这是可能的,或者我怎么能实现这个目标?
我知道上下文绑定只能通过构造函数来解决,而构造函数不允许使用params,我是对的吗?
有没有解决办法?
答案 0 :(得分:1)
当一个类在其构造函数中获取给定的依赖项时,上下文绑定起作用。然后,Laravel将在创建该类时以给定的方式构建依赖关系。
使用app()->make()
表示没有任何上下文 - 该类不是作为另一个的依赖而构建的,它只是在构建。值得注意的是app()->make()
将不再在Laravel 5.4中引用争论
如果您需要在您的应用程序中使用那些给定参数的课程,只需自己修改它 - 您不需要使用容器。
$instance = new EventNotificationParamsResolver(123, [1, 2, 3]);