如何将params应用于laravel 5中的上下文绑定接口解析

时间:2017-02-28 23:50:47

标签: laravel interface

我想用以下参数解决上下文绑定:

$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,我是对的吗?

有没有解决办法?

1 个答案:

答案 0 :(得分:1)

当一个类在其构造函数中获取给定的依赖项时,上下文绑定起作用。然后,Laravel将在创建该类时以给定的方式构建依赖关系。

使用app()->make()表示没有任何上下文 - 该类不是作为另一个的依赖而构建的,它只是在构建。值得注意的是app()->make()将不再在Laravel 5.4中引用争论

如果您需要在您的应用程序中使用那些给定参数的课程,只需自己修改它 - 您不需要使用容器。

$instance = new EventNotificationParamsResolver(123, [1, 2, 3]);