Laravel按需注册服务提供商

时间:2019-03-26 08:36:29

标签: laravel service provider

我已将我的代码分为作曲家软件包:  -核心  -后台  - 仪表板  -等等

例如: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);
}

我的问题是:这是正确的方法还是有更好的解决方案?

0 个答案:

没有答案