Laravel 请求生命周期

简介

在“现实世界”中使用任何工具时,如果了解该工具的工作原理,就会更有信心。应用程序开发也是一样的。了解开发工具的功能后,使用起来就会感到来更加舒适和自信。

本文档的目的是提供有关Laravel框架如何工作的高级概述。更好地了解整个框架,我们在构建引用程序时将会更加自信。如果不能立即理解所有术语,也没太大关系!只需有一个基本的了解,当浏览文档的其他部分时,慢慢的就会理解。


生命周期概述

第一件事

对Laravel应用程序的所有请求的入口点是public/index.php文件。所有请求均由Web服务器(Apache / Nginx)配置定向到此文件。该index.php文件没有太多代码。它只是加载框架其余部分的起点。

index.php文件将加载Composer生成的自动加载器,然后从bootstrap/app.php文件中检索Laravel应用程序的实例。Laravel本身采取的第一个操作是创建应用程序/服务容器的实例。

HTTP / Console 内核

接下来,根据进入应用程序的请求类型,将请求发送到HTTP内核Console内核。这两个内核是所有请求流经的中心位置。现在,我们仅关注位于app/Http/Kernel.php中的HTTP内核。

HTTP Kernel继承了Illuminate\Foundation\Http\Kernel类,该类定义了一个数组——bootstrappers该数组将在执行请求之前运行。这些引导程序配置了错误处理,日志记录,检测应用程序环境以及执行在实际处理请求之前需要完成的其他任务。

HTTP内核还定义了一个HTTP中间件列表,所有请求在被应用程序处理之前必须通过这些中间件。这些中间件包括读写HTTP会话,确定应用程序是否处于维护模式,验证CSRF令牌等。

HTTP内核的handle方法非常简单:接收Request并返回Response。可以将内核视为整个应用程序的大黑匣子。向其提供HTTP请求,它将返回HTTP响应。

服务供应商

最重要的内核引导操作之一是为应用程序加载Service Providers。应用程序的所有 service providers 都在config/app.php配置文件的providers数组中进行配置。首先调用所有providers的register方法,然后,在注册这些service providers时,调用它们的boot方法。

service provider负责引导框架的所有组件,例如数据库,队列,验证和路由组件。由于它们引导并配置框架提供的每个功能,因此Service Providers在整个Laravel引导过程中是非常重要的。

分发请求

一旦启动了应用程序并注册了所有service providers,Request将被移交给路由器进行解析。路由器会将请求分派到路由或控制器,并运行与该路由相关的中间件。


聚焦Service Provider

Service Provider确实是引导Laravel应用程序的关键。创建应用程序实例,注册了Service Provider,并将请求移交给了引导程序。真的就是这么简单!

牢固掌握如何通过Service Provider构建和引导Laravel应用程序是非常有用的。应用程序的默认Service Provider存储在app/Providers目录中。

默认情况下,AppServiceProvider只是一个框架,没有实际的业务代码。但是我们可以在它里面实现自己的引导程序,并且对服务容器进行绑定。对于大型应用程序,我们可能希望创建多个 service provider,每个 service provider都具有更精细的引导类型。

查看笔记

扫码一下
查看教程更方便