在 Laravel 5 中重新分配或刷新单例



我有一个提供程序,在它的寄存器方法中,我像这样定义了一个单例,

$this->app->singleton('my.custom.singleton', function ($app) {
$config_value = $app->make($this->config('key'));
return new MyClass($config_value);
});

如您所见,我得到一个配置值并将其作为参数放入我的类中。

在项目的另一个地方,我使用代码更改config('key')的值:

Config:set('key',$my_changed_value);

我调用一个MyClass方法,该方法使用我将其发送到上面提供程序中的类的参数。

但是MyClass不使用config('key')的新值。我认为发生这种情况是因为单例已使用默认值配置定义。

我认为如果我可以在分配配置的新值后重新定义单例就可以了。

或者我的问题有什么解决方案吗?我错了吗?我该怎么做才能在MyClass中使用新值?

只需为它分配null,它将在下次调用时从头开始创建

app()->instance(PaymentServiceContract::class, null);

可能是相关的配置缓存,你使用配置缓存吗?

清除缓存后可以重试吗

php artisan config:clear

相关内容

  • 没有找到相关文章

最新更新