Переназначить или обновить синглтон в Laravel 5 - PullRequest
0 голосов
/ 10 июня 2018

У меня есть провайдер, и в его методе регистров я определил синглтон, подобный этому,

$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?

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Просто присвойте ему null, и он будет создан с нуля при следующем вызове

app()->instance(PaymentServiceContract::class, null);
0 голосов
/ 11 июня 2018

Это может быть связанный кеш конфигурации, Вы используете кеш конфигурации?

Можете ли вы повторить попытку после очистки кеша

php artisan config:clear
...