Laravel 5.1延迟服务提供商,直到加载另一个服务提供商
我正在使用Laravel5.1中的Laravel 5.1延迟服务提供商,直到加载另一个服务提供商,laravel,laravel-5.1,Laravel,Laravel 5.1,我正在使用Laravel5.1中的FormBuilder。HtmlServiceProvider声明Html和Form外观应推迟加载,直到实际需要时才加载,这很好 但是,我已经创建了一个FormServiceProvider,它注册了我将在视图中使用的几个宏。此提供程序不运行任何绑定,它只是在FormBuilder类中记录一些宏 但是,通过在我自己的服务提供商上使用boot方法存储这些宏,它可以立即加载Form绑定(使延迟加载毫无意义) 问题 有没有办法推迟一个服务提供商的boot方法,直到另一
FormBuilder
。HtmlServiceProvider
声明Html
和Form
外观应推迟加载,直到实际需要时才加载,这很好
但是,我已经创建了一个FormServiceProvider
,它注册了我将在视图中使用的几个宏。此提供程序不运行任何绑定,它只是在FormBuilder
类中记录一些宏
但是,通过在我自己的服务提供商上使用boot
方法存储这些宏,它可以立即加载Form
绑定(使延迟加载毫无意义)
问题
有没有办法推迟一个服务提供商的boot
方法,直到另一个服务提供商绑定了facades
或者,是否有一种方法可以侦听特定的绑定
(或别名
)事件,然后手动运行服务提供商?您可以在容器解析任何类型的对象时侦听,或者在容器解析XXX类型的对象时侦听,如下所示
$this->app->resolving(function ($object, $app) {
// Called when container resolves object of any type...
});
$this->app->resolving(FooBar::class, function (FooBar $fooBar, $app) {
// Called when container resolves objects of type "FooBar"...
});
以下是您应该参考的
您的服务提供商应提供Form:class
和Html::class
此方法不能延迟提供。只是为了解决课堂上的问题而观察。