Мы пытаемся зарегистрировать синглтон, например.
$this->app->singleton('blah', function ($app, $options) {
return $app->makeWith(Something::class, $options);
});
в конструкции Something::class
мы logger('started')
Затем мы создаем класс через контейнер в контроллере, например,
$something = app()->makeWith('blah', ['x' => 'y'])
Мы проверяем журнал, и вы можете увидеть started
Затем в другом месте мы пытаемся вытащить его обратно из контейнера, например,
$instance = resolve('blah');
Однако в журнале показано другое started
Это предполагает, что контейнер не возвращает тот же экземпляр, что и конструкция, выполняемая дважды.
Возможно, это потому, что когда мы вызываем resolve
, мы не передаем те же параметры, с которыми он был создан.
Если так, как мы можем обойти это без установки статической переменной где-нибудь?