请求周期

Laravel 中文文档 / 核心架构

请求周期

简介

在「现实世界」中,如果了解工具的工作原理,那么在使用工具时会更有信心。应用开发也不例外。当您了解开发工具的功能时,使用起来会更加舒适和自信。

本文档的目标是为您提供有关「Laravel 框架是如何工作的」的良好的、高层次的概览。随着更好地了解整个框架,一切都感觉不再那么「神奇」,您将更自信地构建应用。如果您没有立即理解所有内容,也不要灰心!尽量对发生的事情有一个基本的了解,随着浏览文档的其它章节,知识将不断增长。

生命周期概述

第一件事

public/index.php 是 Laravel 应用请求的入口文件。所有请求都通过 Web 服务器(Apache / Nginx)配置重定向到该文件。index.php 文件不包含太多的代码。反而,它是加载框架其它部分的起始点。

index.php 文件加载 Composer 生成的自动加载器,然后从 bootstrap/app.php 脚本中获取 Laravel 应用实例。Laravel 本身做的第一件事是创建一个应用/服务容器 实例。

HTTP/终端内核

接下来,将请求发送到 HTTP 内核或终端内核,具体取决于进入应用的请求类型。这两个内核是所有请求都要通过的中心位置。现在,让我们只关注 app/Http/Kernel.php HTTP 内核。

HTTP 内核继承自 Illuminate\Foundation\Http\Kernel 类,它定义了一个在执行请求前运行的 bootstrappers 数组。数组中的引导程序会配置错误处理,配置日志记录,检测应用环境 和执行在实际处理请求前要完成的其它任务。

HTTP 内核还定义了所有请求被应用处理之前必须经过的 HTTP 中间件 列表。这些中间件会处理 HTTP Session 的读写,判断应用是否处于维护模式,验证 CSRF 令牌 等。

HTTP 内核的 handle 方法的参数非常简单:接收 Request 并返回 Response。可以把内核看作一个代表整个应用的大黑盒子。给它 HTTP 请求,就会返回 HTTP 响应。

服务提供者

内核引导最重要的操作之一是为应用加载 服务提供者。应用的所有服务提供者都在配置文件 config/app.phpproviders 数组中配置。所有提供者都会先调用 register 方法进行注册,注册完成后,再调用 boot 方法启动。

服务提供者负责引导框架的各种组件,例如数据库、队列、验证和路由组件。框架提供的每个功能都由它们来引导并配置,因此服务提供者是整个 Laravel 引导过程中最重要的方面。

分发请求

应用引导完成并注册了所有服务提供者后,Request 将被交给路由器进行分发。路由器将请求分发到路由或控制器,并运行路由指定的中间件。

聚焦服务提供者

服务提供者确实是引导 Laravel 应用的关键。创建应用实例,注册服务提供者,并将请求交给引导的应用。就这么简单!

牢牢掌握如何通过服务提供者来构建和引导 Laravel 应用是很有价值的。应用的默认服务提供者存放在 app/Providers 目录中。

默认情况下,AppServiceProvider 是空的。此服务提供者是添加应用自身引导和服务容器绑定的好地方。当然,对于大型应用而言,可以创建多个服务提供者,每个服务提供者进行更细致类型的引导。

  上一篇 下一篇  

作者:ilaoniu

牛哥,俗称哞哞。单纯的九零后理工小青年。喜欢折腾,爱玩,爱安卓,爱音乐,爱游戏,爱电影,爱旅游...