我已将我的代码分为作曲家软件包: -核心 -后台 - 仪表板 -等等
例如:BackOffice需要Core,而Dashboard需要BackOffice
现在,我已经制作了一个单例,其中包含BackOffice MenuItems的类。
BackOfficeServiceProvider(注册):
$this->app->singleton(
'backoffice::view_hooks',
function () {
return new ViewHookRegistrar();
}
);
因此,我可以使用此单例来注册各个程序包中的菜单项。
DashboardServiceProvider(启动);
$hook = new ViewHook('main_menu', $this->package['name'] . '::menu', 1);
app('backoffice::view_hooks')->addViewHook($hook);
但是现在我有一个问题,我不想在app.php中手动注册我的ServiceProvider,但是通过“自动加载方式”,我无法控制哪个ServiceProvider首先注册/引导。 (BackOfficeServiceProvider必须先出现,它必须注册单例)
我的方法是在ServiceProviders包中注册BackofficeServiceProvider
DashboardServiceProvider(注册):
if (!app()->getProvider(BackofficeServiceProvider::class)) {
app()->register(BackofficeServiceProvider::class);
}
我的问题是:这是正确的方法还是有更好的解决方案?