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

Reassign or refresh a singleton in Laravel 5

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

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

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

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

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

并且我调用了 MyClass 的方法,该方法使用我将其发送到上面我的提供程序中的 class 的参数。

但是MyClass不使用config('key')的新值。我认为发生这种情况是因为已经使用默认值 config.

定义了单例。

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

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

可能与配置缓存有关,您使用配置缓存吗?

清除缓存后能否重试

php artisan config:clear

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

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