在 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);
我有一个提供者,在它的注册方法中我定义了一个这样的单例,
$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);