Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 5.1延迟服务提供商,直到加载另一个服务提供商_Laravel_Laravel 5.1 - Fatal编程技术网

Laravel 5.1延迟服务提供商,直到加载另一个服务提供商

Laravel 5.1延迟服务提供商,直到加载另一个服务提供商,laravel,laravel-5.1,Laravel,Laravel 5.1,我正在使用Laravel5.1中的FormBuilder。HtmlServiceProvider声明Html和Form外观应推迟加载,直到实际需要时才加载,这很好 但是,我已经创建了一个FormServiceProvider,它注册了我将在视图中使用的几个宏。此提供程序不运行任何绑定,它只是在FormBuilder类中记录一些宏 但是,通过在我自己的服务提供商上使用boot方法存储这些宏,它可以立即加载Form绑定(使延迟加载毫无意义) 问题 有没有办法推迟一个服务提供商的boot方法,直到另一

我正在使用Laravel5.1中的
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

此方法不能延迟提供。只是为了解决课堂上的问题而观察。