laravel服务提供者是建立在服务容器之上,实现了高内聚,低耦合的功能模块,register函数负责将实现类绑定到服务容器中,boot函数会在所有的服务提供者加载完之后执行;
laravel在启动框架阶段,会读取配置config/app.php中的providers的所有的服务提供者,在所有服务提供者的 register 函数调用完成之后,再依次调用各个服务提供者的 boot 函数,完成服务提供者的注册和启动。所以不要尝试在 register 方法中注册任何监听器,路由,或者其他任何功能。否则,你可能会意外地使用到尚未加载的服务提供者提供的服务。
如何创建服务提供者
php artiasn make:provider CurlServiceProvider
延时服务提供者
1.只需要在我们服务提供中添加
protected $defer = true;
/**
* 中间不变的地方暂时省略
*
*/
public function provides()
{
return ['curl'];
}
2.执行 php artisan clear-compiled ,会重新生成框架缓存文件,在 bootstrap/cache/services.php 中保存系统服务提供者的所有信息,其中 deferred 保存的是所有需要延迟加载的服务提供者。
laravel原文链接:https://learnku.com/articles/27678