文章目录
Laravel 6 - 第一章 简介
Laravel 6 - 第二章 项目搭建
Laravel 6 - 第三章 文件夹结构
Laravel 6 - 第四章 生命周期
Laravel 6 - 第五章 控制反转和依赖注入
Laravel 6 - 第六章 服务容器
Laravel 6 - 第七章 服务提供者
Laravel 6 - 第八章 门面
Laravel 6 - 第九章 契约
Laravel 6 - 第十章 路由
Laravel 6 - 第十一章 中间件
Laravel 6 - 第十二章 控制器
Laravel 6 - 第十三章 请求
Laravel 6 - 第十四章 响应
Laravel 6 - 第十五章 验证器
Laravel 6 - 第十六章 Artisan命令
Laravel 6 - 第十七章 配置数据库
Laravel 6 - 第十八章 模型
Laravel 6 - 第十九章 模型文件
目录
一、Http 请求的生命周期
在了解 Laravel 6
的生命周期之前,需要先简单了解 Http请求
的生命周期:
1、用户(客户端)和 Web服务器
通过 TCP/IP
协议建立连接(俗称:上网)。
2、向 Web服务器
发送 Http请求
,也就是用户上网的动作(比如:搜索、上传、下载等)。
3、Web服务器
接受到请求后开始解析,解析完成后并返回 Http响应
(用户上网时想看到的结果)
4、释放 TCP
连接:Web服务器
发送完响应后,需要释放 TCP
连接。如果连接模式为 close
,则会主动关闭连接;如果连接模式为 keepalive
,则该连接会保持一段时间,以便在这段时间内继续接受请求。
二、Laravel 6 的生命周期
1.请求进入
当用户通过浏览器或者其他客户端(如:app、小程序等)发送 Http请求
到 Laravel应用
时,生命周期开始。
2.接受请求
Web服务器
(如:Apache、Nginx等)接受到请求,并将其传递给 php
解释器。
3. 引导程序
Laravel 6
的所有请求入口都是 public/index.php
(第二章myapp.conf
中配置的项目路径),index.php
文件加载 composer
生成的自动加载设置,然后从 bootstrap/app.php
中检索应用程序的实例,初始化核心组件(如:服务器容器、事件分发器等)
4.创建请求实例
创建一个 Illuminate\Http\Request
对象,该对象封装了 Http
请求的所有信息(如:url、请求头、请求方法、查询参数等)
5.中间件处理
加载并运行 全局中间件
和 路由指定的中间件
。中间件
可以在请求到达目标路由之前或响应返回给客户端之前执行代码,用于处理 身份验证
、日志记录
、cors
设置等任务。
6.路由解析
路由组件解析 请求的 url
,并根据定义的路由规则确定应该调用哪个控制器方法或闭包函数。
7.执行控制器方法或闭包
路由解析完成后,调用相应的控制器方法或闭包函数。这是业务逻辑处理的主要位置,在这里执行数据库查询、数据验证、文件操作等。建议做逻辑分离,不要将所有逻辑混在一个方法中,这样有助于降低耦合度,减少程序维护成本。
8.视图渲染
控制器方法通常会返回一个视图实例或响应对象。如果返回视图实例,则会使用视图组件来渲染视图文件,生成 HTML 响应。视图也可以包含从控制器传递过来的数据。如果是前后端分离,则可不使用视图渲染。
9.发送响应
将生成的响应对象发送回客户端,响应可以是一个 HTML 页面、JSON 数据、图片或其他任何内容。
10.终止事件
响应发送后,会触发终止事件,执行清理或记录操作,这些操作不影响发送给客户端的响应。
总结
在整个请求生命周期中,Laravel 6
还提供了许多事件和钩子,允许开发者在特定阶段插入自定义逻辑。例如:使用服务提供者来注册自定义的服务或在中间件中执行跨请求逻辑等。
理解 Laravel 6
的请求生命周期有助于更好地组织代码,实现关注点分离,并在正确的位置执行逻辑。通过合理地利用中间件、事件和钩子,可以构建出高效、可维护、可扩展的应用程序。