Laravel中的全局服务对象

时间:2019-07-05 11:41:37

标签: php laravel

我有一个服务文件,用于处理数据并将其存储在私有字段中。执行了许多查询,因此我只想实例化服务文件一次,并在请求生命周期的后期阶段在必要时从字段访问数据。

我尝试使用以下代码段在Laravel的服务提供商中注册服务文件,但它似乎没有达到我的预期。

$this->app->singleton('App\Services\UserService', function ($app) {
    return new App\Services\UserService();
});

就我而言,我第一次调用服务方法是在中间件类中。我调用的特定方法应该已经设置了许多私有字段,以后可以使用。服务文件是使用“注入”方法加载的。

public function __construct(UserService $user_service) {
    $this->user_service = $user_service;
}

但是,一旦请求最终进入控制器方法,服务对象中的字段将为空,我不得不再次调用“重载”方法。

在controller构造函数方法中,我使用resolve() helper方法解析了服务文件,但是我认为这不会有所作为。

有什么我想念或误解的东西吗?

任何帮助或指针都适用!

0 个答案:

没有答案