Отложенная сервисная зависимость Laravel

Попытка получить отложенный сервис из IoC у другого поставщика услуг не удалась.

class ServiceProvider extends \Illuminate\Support\ServiceProvider {

// ...

public function register() {
$router = \App::make('router'); // gets resolved
$hash = \App::make('hash'); // throws an error (Class hash does not exists)
}

// ...

}

изменения $deffered = false в true в HashingServiceProvider решает эту проблему.
Что я делаю неправильно?

0

Решение

Если вы полагаетесь на другого поставщика услуг, сделайте это в boot метод:

class ServiceProvider extends \Illuminate\Support\ServiceProvider {

public function boot ()
{
$hash = $this->app['hash'];
}

}

Вот цитата из документы:

register метод вызывается сразу же, когда поставщик услуг зарегистрирован, а boot Команда вызывается только перед отправкой запроса. Таким образом, если действия вашего поставщика услуг основаны на том, что другой поставщик услуг уже зарегистрирован, или вы переопределяете службы, связанные с другим поставщиком, вам следует использовать boot метод.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector