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

标签 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的默认值进行了定义。

我认为如果在分配新的config值后可以重新定义单例,那将是可以的。

还是我的问题有解决方案?我错了吗?如何使用MyClass中的新值?

最佳答案

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

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

关于laravel - 在Laravel 5中重新分配或刷新单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50786558/

相关文章:

mysql - 如何在Laravel 5中处理BIT数据类型?

php - Laravel whereBetween 在两列中

ios - Objective-C Singleton 中的变量被重置

java - 为什么 Guice 为我的单例创建一个新实例?

php - 在 laravel 中查找具有 hasmany 关系的结果

php - Laravel 5.5 - Horizo​​n 不自动运行第二个队列

laravel - 自定义 header 在 Laravel $request 对象中不可用

java - Spring单例被调用两次

laravel - public_path() 返回带有反斜杠而不是正斜杠的结果

php - 从 laravel 中的路由将参数传递给 Controller