美文网首页
laravel中请求的一次生命周期

laravel中请求的一次生命周期

作者: 浓眉小眼_2f50 | 来源:发表于2018-09-14 18:03 被阅读0次

    简介

    当我们使用工具的时候,先去了解一下工具的工作原理,总是有必要的。因为只有这样,我们才可以从经验中去挖掘提高工具的生产力。

    这篇文档的目标就是如此。从整个生命周期的角度去理解 Laravel 框架的工作原理,在开发时才可以更加的得心应手。

    生命周期概览

    第一件事

    Laravel 应用和其他的php框架一样,所有请求的入口都是 public/index.php 文件,所有请求都会被 web 服务器(Apache/Nginx)导向这个文件。 index.php 文件包含的代码并不多,但是,这里是加载框架其它部分的起点。

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

    HTTP/Console 内核

    接下来,请求被发送到 HTTP 内核或 Console 内核(分别用于处理 Web 请求和 Artisan 命令),这取决于进入应用的请求类型。这两个内核是所有请求都要经过的中央处理器,现在,就让我们聚焦在位于 app/Http/Kernel.php 的 HTTP 内核。

    HTTP 内核继承自 Illuminate\Foundation\Http\Kernel 类,该类定义了一个 bootstrappers 数组,这个数组中的类在请求被执行前运行,这些 bootstrappers 配置了错误处理、日志、检测应用环境以及其它在请求被处理前需要执行的任务。

    HTTP 内核还定义了一系列所有请求在处理前需要经过的 HTTP 中间件,这些中间件处理 HTTP 会话的读写、判断应用是否处于维护模式、验证 CSRF 令牌等等。

    HTTP 内核的 handle 方法签名相当简单:获取一个 Request,返回一个 Response,可以把该内核想象作一个代表整个应用的大黑盒子,输入 HTTP 请求,返回 HTTP 响应。

    服务提供者

    内核启动过程中最重要的动作之一就是为应用载入服务提供者,应用的所有服务提供者都被配置在 config/app.php 配置文件的 providers 数组中。首先,所有提供者的 register 方法被调用,然后,所有提供者被注册之后,boot 方法被调用。

    服务提供者负责启动框架的所有各种各样的组件,比如数据库、队列、验证器,以及路由组件等,正是因为他们启动并配置了框架提供的所有特性,所以服务提供者是整个 Laravel 启动过程中最重要的部分。

    分发请求

    一旦应用被启动并且所有的服务提供者被注册,Request 将会被交给路由器进行分发,路由器将会分发请求到路由或控制器,同时运行所有路由指定的中间件。
    路由分发请求到控制器内后,就可以返回响应了。至此,一次请求的生命周期也完成了。

    注:服务提供者

    服务提供者是启动 Laravel 应用中最关键的部分,对 Laravel 应用如何通过服务提供者构建和启动有一个牢固的掌握非常有价值,当然,应用默认的服务提供者存放在 app/Providers 目录下。默认情况下,AppServiceProvider 是空的,这里是添加自定义启动和服务容器绑定的最佳位置。

    相关文章

      网友评论

          本文标题:laravel中请求的一次生命周期

          本文链接:https://www.haomeiwen.com/subject/tgzogftx.html