я разделил свой код на пакеты для композиторов: - 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);
}
Мой вопрос: это правильный путь или есть лучшее решение?