博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
laravel请求生命周期
阅读量:6801 次
发布时间:2019-06-26

本文共 1577 字,大约阅读时间需要 5 分钟。

hot3.png

了解一次laravel的请求生命周期可以加深对框架底层的理解.

public/index.php : 请求的入口文件和出口文件

动作 作用

加载/../bootstrap/

autoload.php

设置环境变量

起始时间

生成请求唯一qid

载入 Composer 生成的自动加载设置

/../vendor/autoload.php

生成一个32位字符串的composer加载类的对象,

会引入所有的类进行注册,并逐个引入类文件

加载/../bootstrap/

app.php

获取laravel应用实例$app

生成请求laravel应用实例$app(服务容器)

实例绑定重要的接口

App\Http\Kernel,

App\Console\Kernel,

App\Exceptions\Handler

实例绑定环境配置文件

实例绑定monolog日志

$kernel = $app->make

(Illuminate\Contracts\Http\Kernel::class)

由于前面$app绑定了Http/Kernel类, 这里创建实例.
$response = $kernel->handle($request = Illuminate\Http\Request::capture()); 请求被发送到 HTTP 内核或 Console 内核(分别用于处理 Web 请求和 Artisan 命令),这取决于进入应用的请求类型。
这两个内核是所有请求都要经过的中央处理器,
现在,就让我们聚焦在位于 app/Http/Kernel.php 的 HTTP 内核。

vendor/laravel/framework/src/

Illuminate/Foundation/Http/Kernel.php

HTTP内核继承自 

Illuminate\Foundation\Http\Kernel 类,该类定义了一个 bootstrappers 数组,这个数组中的类在请求被执行前运行,这些 bootstrappers 配置了错误处理、日志、以及其它在请求被处理前需要执行的任务。

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

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

应用默认的服务提供者存放在 app/Providers 目录下。

默认情况下,AppServiceProvider 是空的,这里是添加自定义启动和服务容器绑定的最佳位置,当然,对大型应用,你可能希望创建多个服务提供者,每一个都有着更加细粒度的启动。

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

(__construct方法)

 

handle方法

获取一个 Request,返回一个 Response,可以把该内核想象作一个代表整个应用的大黑盒子,输入 HTTP 请求,返回 HTTP 响应。

Request 将会被交给路由器进行分发,路由器将会分发请求到路由或控制器,同时运行所有路由指定的中间件。

服务提供者是启动 Laravel 应用中最关键的部分,应用实例被创建后,服务提供者被注册,请求被交给启动后的应用进行处理,整个过程就是这么简单!

转载于:https://my.oschina.net/u/3412738/blog/3011495

你可能感兴趣的文章
Redis radix tree源码解析
查看>>
数组和链表
查看>>
撩课-Java面试宝典-第三篇
查看>>
阿里云前端周刊 - 第 13 期
查看>>
给你一份架构部操作手册,你会用么?
查看>>
接口Deque <E>
查看>>
线程安全的无锁RingBuffer
查看>>
移动安全-iOS(二)
查看>>
有趣的Linux命令
查看>>
04 | 深入浅出索引(上)
查看>>
破解 Kotlin 协程(7) - 序列生成器篇
查看>>
React 生命周期
查看>>
App 瘦身 项目实践
查看>>
基于vue2.0+ 抽奖项目
查看>>
线程和进程基础以及多线程的基本使用(iOS)
查看>>
typeof vs instanceof
查看>>
Array.from方法具体理解(3分钟)
查看>>
CS229课程01-机器学习的动机与应用
查看>>
iOS开发常用框架总览!
查看>>
Javascript实现冒泡排序与快速排序以及对快速排序的性能优化
查看>>