【问题标题】:Reassign or refresh a singleton in Laravel 5在 Laravel 5 中重新分配或刷新单例
【发布时间】:2018-06-10 17:58:02
【问题描述】:

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

$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 中的新值?

【问题讨论】:

    标签: laravel laravel-5 singleton provider


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      清空缓存后能否重试

      php artisan config:clear
      

      【讨论】:

      • 我之前做过这个,不是回答
      猜你喜欢
      • 1970-01-01
      • 2013-03-24
      • 1970-01-01
      • 2020-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多