Laravel регистрирует поставщика услуг по требованию - PullRequest
0 голосов
/ 26 марта 2019

я разделил свой код на пакеты для композиторов: - core - backoffice - dashboard - и так далее

например: BackOffice требует Core, а Dashboard требует BackOffice

Теперь я создал синглтонкоторый содержит класс для BackIffice MenuItems.

BackOfficeServiceProvider (register):

$this->app->singleton(
    'backoffice::view_hooks',
     function () {
         return new ViewHookRegistrar();
     }
);

Так что я могу использовать этот синглтон для регистрации элементов меню из отдельных пакетов.

DashboardServiceProvider (boot);

$hook = new ViewHook('main_menu', $this->package['name'] . '::menu', 1);
app('backoffice::view_hooks')->addViewHook($hook);

Но теперь у меня проблема в том, что я не хочу вручную регистрировать мои ServiceProviders в app.php, но с "способом автозагрузки" я не могу контролировать, какой ServiceProvider регистрирует / загружаетпервый.(BackOfficeServiceProvider должен стоять первым, он должен регистрировать синглтон)

Мой подход заключается в регистрации BackofficeServiceProvider внутри пакетов ServiceProviders

DashboardServiceProvider (регистрация):

if (!app()->getProvider(BackofficeServiceProvider::class)) {
    app()->register(BackofficeServiceProvider::class);
}

Мой вопрос: это правильный путь или есть лучшее решение?

...