我有一个提供程序,在它的寄存器方法中,我像这样定义了一个单例,
$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