应用中间件后,服务提供商中的最佳实践访问请求

时间:2018-12-21 02:51:36

标签: php laravel laravel-5 request

我已经找到了关于如何在应用中间件后在服务提供商中访问请求的答案

$request = app(\Illuminate\Http\Request::class); 

Access Request in Service Provider After Applying Middleware

enter image description here

但这是一个好习惯吗?有没有更好的方法来访问 appServiceProvider 中的请求正文? 谢谢。

1 个答案:

答案 0 :(得分:0)

几乎所有服务容器绑定都将在服务提供者中注册,因此这些示例中的大多数将在该上下文中演示如何使用容器。

如果类不依赖于任何接口,则无需将类绑定到容器中。无需指示容器如何构建这些对象,因为它可以使用反射自动解析这些对象。

简单绑定

在服务提供商内部,您始终可以通过$this->app属性访问该容器。我们可以使用bind方法注册绑定,将要注册的类或接口名称与返回类实例的Closure一起传递:

$this->app->bind('HelpSpot\API', function ($app) {
    return new HelpSpot\API($app->make('HttpClient'));
});

请注意,我们将容器本身作为解析器的参数。然后,我们可以使用容器来解析我们正在构建的对象的子依赖性。

绑定单例

单例方法将类或接口绑定到只能解析一次的容器中。解决单例绑定后,在随后的容器调用中将返回相同的对象实例:

$this->app->singleton('HelpSpot\API', function ($app) {
    return new HelpSpot\API($app->make('HttpClient'));
});