Laravel的请求声明周期
声明周期概述#
开始#
public/index.php 文件是所有对Laravel应用程序的请求的入口点。而所有的请求都是经由你的Web服务器(Apache/Nginx)
通过配置引导到这个文件。index.php 文件不包含太多的代码,却是加载框架的起点。
index.php 问价加载Composer生成定义的自动加载器,然互从bootstrap/app.php脚本中检索Laravel应用程序的实例。
Laravel本身采取的第一个动作是创建一个application/service container的实例。
HTTP / 控制器内核#
接下来,根据进入应用的程序大的请求类型来将传入的请求发送到HTTP内核或控制台内核。而这两个内核是用来作为所有
请求都要通过的中心位置。现在,我们先看看位于 app/Http/Kernel.php中的HTTP内核。
HTTP内核继承了 Illuminate\Foundation\Http\Kernerl类,他定义了在执行请求之前运行的bootstrappers数组。这个数组
负责在实际处理请求之前完成这些内容:配置错误处理、配置日志记录、检测应用程序环境以及执行其他需要完成的任务。
HTTP内核还定义了所有请求被应用程序处理之前必须经过的HTTP中间件的列表。这些中间件处理HTTP会话的读写。
确定应用程序是否处于维护模式、验证CSRF令牌等。
HTTP内核的handle方法的方法签名非常简单:接收Request 并返回 Response。可以把内核当做是代表整个应用
程序的大黑盒,给他HTTP请求,他就返回HTTP相应。
服务提供器#
最重要的内核引导操作之一是加载应用程序的服务提供器。引用程序的所有服务提供器都在config/app.php配置文件的
providers 数组中配置。首先,所有提供器都会调用register方法,接着,由 boot方法负责调用所有被注册提供器。
服务器负责引导所有框架的各种组件,如数据库、队列、验证和路由文件。也就是说,框架提供的每个功能
都由他们来引导并配置。因此也可以说,服务提供器是整个Laravel引导过程中最重要的方面。
分配请求#
一旦引导了引用程序且注册所有服务器提供器,Request请求就会被转交给路由器来进行调度。路由器将请求发送到路由
或控制器或任何运行与路由的特定中间件。
聚焦服务提供器#
服务提供器引导Laravel应用程序真正的关键。创建应用程序实例、注册服务提供器,并请求交给被引导的
应用程序。
Laravel的请求声明周期的更多相关文章
- laravel中的$request对象构造及请求生命周期
laravel应用程序中index.php是所有请求的入口.当用户提交一个form或者访问一个网页时,首先由kernel捕捉到该session PHP运行环境下的用户数据, 生成一个request对象 ...
- Django-分页、中间件和请求的声明周期
一.分页 相关连接:https://www.cnblogs.com/kongzhagen/p/6640975.html 一.Django的分页器(paginator) 1.view.py 视图 fro ...
- 我所理解的 Laravel 请求 生命周期
转载自:https://laravel-china.org/topics/3343/my-understanding-of-the-laravel-request-life-cycle 当你使用一个工 ...
- [原创]java WEB学习笔记31:会话与状态管理 session机制 概述(定义,session机制,session的声明周期,保存session的方式,Session的创建与删除)
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- 01_4_SERVLET声明周期
01_4_SERVLET声明周期 1. Servlet的生命周期 生命全过程 加载ClassLoader 实例化 new //客户端第一次请求的时候,只new一次 初始化init(ServletCon ...
- Vue的项目搭建及请求生命周期
目录 Vue的项目搭建及请求生命周期 Vue-CLI的项目搭建 环境搭建 项目创建 pycharm运行Vue项目 Vue项目的大体结构 Vue的请求生命周期 两个小用法 Vue的项目搭建及请求生命周期 ...
- [Django框架 - 静态文件配置、request对象方法初识、 pycharm链接数据库、ORM实操增删改查、django请求生命周期]
[Django框架 - 静态文件配置.request对象方法初识. pycharm链接数据库.ORM实操增删改查.django请求生命周期] 我们将html文件默认都放在templates文件夹下 将 ...
- Vue 引出声明周期 && 组件的基本使用
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8" /> 5 & ...
- C# MVC 5 - 生命周期(应用程序生命周期&请求生命周期)
本文是根据网上的文章总结的. 1.介绍 本文讨论ASP.Net MVC框架MVC的请求生命周期. MVC有两个生命周期,一为应用程序生命周期,二为请求生命周期. 2.应用程序生命周期 应用程序生命周期 ...
随机推荐
- USACO 2.1.4
/* ID: weitong4 LANG: C++ TASK: holstein */ #include<stdio.h> #include<string.h> #define ...
- POJ1182 NOI2001 食物链
食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 77428 Accepted: 23067 Description ...
- 基于spring-boot的测试桩设计-添加配置文件(properties)
编写测试时,有些内容可以放到配置文件中. 第一步:新增配置文件 conf.properties 第二步:编写配置文件类 MockConf package mock.mockdemo.conf; imp ...
- scala的插值器
Scala 为我们提供了三种字符串插值的方式,分别是 s, f 和 raw.它们都是定义在 StringContext 中的方法. s 字符串插值器 val a = 2println(s"小 ...
- SVN 打包时,出现File not found: transaction '148-48', path ''https://xxxxxx/svn/xxxxx/tag/2017-9-30'
svn打包时,出现错误如下: 解决办法: 在SVN目录结构中,增加tag这个目录.
- Least Common Multiple (最小公倍数,先除再乘)
思路: 求第一个和第二个元素的最小公倍数,然后拿求得的最小公倍数和第三个元素求最小公倍数,继续下去,直到没有元素 注意:通过最大公约数求最小公倍数的时候,先除再乘,避免溢出 #include ...
- 【JZOJ3640】【COCI2014】utrka
Mission 2<=N<=300,2<=M<=N∗(N−1) Solution SPFA. 由于只是二元关系,所以条件随便写. 具体来说,如果是u⇒v. 若v的最大领先时间还 ...
- 学习JDK1.8集合源码之--Stack
1. Stack简介 Stack是集合中对数据结构栈的一种实现,栈的原则是先进先后出,与队列相反(先进先出).Stack是继承自Vector的,意味着它也是由数组实现的线程安全的,不考虑线程安全的情况 ...
- linux系统 (实验一)实验楼的课程笔记
实验楼的课程笔记 tab 键是命令补全 输入 tail find / 立刻卡住 这时候ctrl+c 可以终端当前指令 一些常用的指令 Ctrl+d 键盘输入结束或退出终端 Ctrl+s 暂停当前程序 ...
- SDUT-3399_数据结构实验之排序二:交换排序
数据结构实验之排序二:交换排序 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 冒泡排序和快速排序都是基于"交 ...