我有一个服务文件,用于处理数据并将其存储在私有字段中。执行了许多查询,因此我只想实例化服务文件一次,并在请求生命周期的后期阶段在必要时从字段访问数据。
我尝试使用以下代码段在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方法解析了服务文件,但是我认为这不会有所作为。
有什么我想念或误解的东西吗?
任何帮助或指针都适用!