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

时间:2018-06-10 17:58:03

标签: laravel laravel-5 singleton provider

我有一个提供者,在其注册方法中我定义了一个像这样的单身,

$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')的新值。我认为这是因为单例已经使用默认值config进行了定义。

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

或者我的问题有什么解决方案吗?我错了吗?如何在MyClass中使用新值?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:-1)

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

清除缓存后可以再试一次吗

df['Status'] = df['Status'].str.strip()