Day27 跟着官方文件学习Laravel-Request 生命周期

Laravel 文件中有跟我们介绍一个 request 的生命周期,也就是诞生到结束在 Laravel 中是如何运作。

应用程序的入口是从 public/index.php 文件中进去,所有请求都会由Web Server送到这个文件中,这个文件一开始会先生成定义 autoload,接着bootstrap/app.php会创建 Application/Service Container 实例。

接着,你的请求会被送到 HTTP kernel 或 console kernel,这取决於你是如何发送请求的,而在文件中会专注说明 HTTP kernel,也就是 app/Http/Kernel.php 这个档案。

HTTP kernel 继承 Illuminate\Foundation\Http\Kernel 这个类别,而这个类别定义了 bootstrappers 这个Array,这些 bootstrap 会在 request 被执行前执行,包含错误处理(error handling), 日志(configure logging)等等,通常这些 Laravel 会帮你处理好,你不必太过在意他。

HTTP kernel 也有定义一个 middleware列表,说明在 http 被处理之前,必须先通过这些middleware才能继续,包含读取和写入HTTP Session,验证 CSRF 等等。

接着进入 HTTP kernel 中的 handle 方法,他里面有个神奇的黑盒子,让你的request进去後返回你一个response,至於这个黑盒子做了什麽,可以参考这篇文章

在这个 kernel 中很重要的就是载入 Service Provider,而Application 中所有 Service Provider 都存在 config/app.php 配置文件的 providers 里。

Laravel 会把 Service Provider 利用 register 方法一一实例化,接着执行 boot,而 boot 可以使用Service Provider。Service Provider 载入後,就可以使用这些组件了,例如数据库、队列、验证和路由组件。Laravel 会提供这些主要的Service Provider 供其应用。其中很重要的 Provider 是路由,我们来看看 RouteServiceProvider 是如何执行的。

一旦 Service Provider 载入後,Request 就会叫由 Route 来分配,路由器会将请求分派给路由或控制器,并运行任何特定於路由的 Middleware,通过 Middleware 後路由或控制器(Controller)方法将被执行,路由或控制器(Controller)方法返回的 response 将通过路由的 Middleware 们回传。

接着 前面的 handle 方法就回传,index.php 接着利用 send 方法返回 response,send方法将response内容送到用户的 Web 浏览器,生命周期就告一段落。

以上是透过 Laravel 官方文件说明整理出来的生命周期,看完後有比较了解整个 request 从件来到送 response 出去的大致流程,至於细节如 黑盒子的话以後有机会再来深入研究,今天就先到这边。


<<:  [Day 28] 来做一个人脸互动的程序吧!

>>:  Day26-JDK可视化监控工具:visualVM(二)

Day 17 建立Blog跟Post

接下来就是跟资料库连结了,会着重说明 ASP.NET Core 跟 EF Core,如果有需要改画面...

Day9 练习java-二维阵列

二维阵列通常是用来描述表格、座位表、计算两班成绩或是同一班两科成绩做比较...凡是描述二维空间的基本...

python 练习

今天要来练习的是必较难的题目,是出自於APCS 105年3月5日的实作题1,那我们就开始吧! 题目 ...

[Day27] 建立 Mock Module / Function 的方式(ft. TypeScript)

今天来谈谈 Mock Module / Function 的部分。Mock Function 是在...

[自学笔记]关於SVN(Subversion) 版本控制系统

安妞大家 以下一样是自学笔记 什麽是SVN(Subversion) ? SVN(Subversion...