Laravel - 延期服务提供商如何运作?

问题描述 投票:1回答:1

官方文件说:

如果打开Laravel附带的config / app.php文件,您将看到provider数组。这些是将为您的应用程序加载的所有服务提供程序类。当然,其中许多是“延迟”提供者,这意味着它们不会在每个请求中加载,而只是在实际需要它们提供的服务时才加载。

如果您的提供程序仅在服务容器中注册绑定,您可以选择推迟其注册,直到实际需要其中一个已注册的绑定。推迟加载这样的提供程序将提高应用程序的性能,因为它不是在每个请求上从文件系统加载的。

如何知道某个包是否使用了“延迟”服务提供程序,而该服务提供程序不会在每个请求中加载?

如果未设置延迟属性,则隐含什么默认值?

...并且在bootstrap / cache / services.php的缓存清单中,提供者,渴望,延迟和何时有什么区别?

那么,如何知道整个应用程序的包装是否会很重?

例如,我想使用非常简单的“cviebrock / eloquent-sluggable”包,并使用trait在模型中添加功能。但是也实现了一个服务,它提供了将在观察者中使用的绑定,我怎么知道这是否只在我保存或编辑模型时加载?

谢谢。

php laravel laravel-5
1个回答
5
投票

如果未设置延迟属性,则隐含什么默认值?

protected $defer的默认值是false

...并且在bootstrap / cache / services.php的缓存清单中,提供者,渴望,延迟和何时有什么区别?

你自己回答了这个问题,所以我想不需要详细阐述。

那么,如何知道整个应用程序的包装是否会很重?

简介它。引导您的应用程序并测试负载。推迟和未决提供样本。

例如,我想使用非常简单的“cviebrock / eloquent-sluggable”包,并使用trait在模型中添加功能。但是也实现了一个服务,它提供了将在观察者中使用的绑定,我怎么知道这是否只在我保存或编辑模型时加载?

任何实现boot方法的提供程序都不能延迟。这个包实现了boot方法。因此,这是一个引导服务提供程序,将加载每个请求。

© www.soinside.com 2019 - 2024. All rights reserved.