声明周期概述#

开始#

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的请求声明周期的更多相关文章

  1. laravel中的$request对象构造及请求生命周期

    laravel应用程序中index.php是所有请求的入口.当用户提交一个form或者访问一个网页时,首先由kernel捕捉到该session PHP运行环境下的用户数据, 生成一个request对象 ...

  2. Django-分页、中间件和请求的声明周期

    一.分页 相关连接:https://www.cnblogs.com/kongzhagen/p/6640975.html 一.Django的分页器(paginator) 1.view.py 视图 fro ...

  3. 我所理解的 Laravel 请求 生命周期

    转载自:https://laravel-china.org/topics/3343/my-understanding-of-the-laravel-request-life-cycle 当你使用一个工 ...

  4. [原创]java WEB学习笔记31:会话与状态管理 session机制 概述(定义,session机制,session的声明周期,保存session的方式,Session的创建与删除)

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  5. 01_4_SERVLET声明周期

    01_4_SERVLET声明周期 1. Servlet的生命周期 生命全过程 加载ClassLoader 实例化 new //客户端第一次请求的时候,只new一次 初始化init(ServletCon ...

  6. Vue的项目搭建及请求生命周期

    目录 Vue的项目搭建及请求生命周期 Vue-CLI的项目搭建 环境搭建 项目创建 pycharm运行Vue项目 Vue项目的大体结构 Vue的请求生命周期 两个小用法 Vue的项目搭建及请求生命周期 ...

  7. [Django框架 - 静态文件配置、request对象方法初识、 pycharm链接数据库、ORM实操增删改查、django请求生命周期]

    [Django框架 - 静态文件配置.request对象方法初识. pycharm链接数据库.ORM实操增删改查.django请求生命周期] 我们将html文件默认都放在templates文件夹下 将 ...

  8. Vue 引出声明周期 && 组件的基本使用

    1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8" /> 5 & ...

  9. C# MVC 5 - 生命周期(应用程序生命周期&请求生命周期)

    本文是根据网上的文章总结的. 1.介绍 本文讨论ASP.Net MVC框架MVC的请求生命周期. MVC有两个生命周期,一为应用程序生命周期,二为请求生命周期. 2.应用程序生命周期 应用程序生命周期 ...

随机推荐

  1. USACO 2.1.4

    /* ID: weitong4 LANG: C++ TASK: holstein */ #include<stdio.h> #include<string.h> #define ...

  2. POJ1182 NOI2001 食物链

    食物链 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 77428   Accepted: 23067 Description ...

  3. 基于spring-boot的测试桩设计-添加配置文件(properties)

    编写测试时,有些内容可以放到配置文件中. 第一步:新增配置文件 conf.properties 第二步:编写配置文件类 MockConf package mock.mockdemo.conf; imp ...

  4. scala的插值器

    Scala 为我们提供了三种字符串插值的方式,分别是 s, f 和 raw.它们都是定义在 StringContext 中的方法. s 字符串插值器 val a = 2println(s"小 ...

  5. SVN 打包时,出现File not found: transaction '148-48', path ''https://xxxxxx/svn/xxxxx/tag/2017-9-30'

    svn打包时,出现错误如下: 解决办法: 在SVN目录结构中,增加tag这个目录.

  6. Least Common Multiple (最小公倍数,先除再乘)

      思路: 求第一个和第二个元素的最小公倍数,然后拿求得的最小公倍数和第三个元素求最小公倍数,继续下去,直到没有元素 注意:通过最大公约数求最小公倍数的时候,先除再乘,避免溢出   #include ...

  7. 【JZOJ3640】【COCI2014】utrka

    Mission 2<=N<=300,2<=M<=N∗(N−1) Solution SPFA. 由于只是二元关系,所以条件随便写. 具体来说,如果是u⇒v. 若v的最大领先时间还 ...

  8. 学习JDK1.8集合源码之--Stack

    1. Stack简介 Stack是集合中对数据结构栈的一种实现,栈的原则是先进先后出,与队列相反(先进先出).Stack是继承自Vector的,意味着它也是由数组实现的线程安全的,不考虑线程安全的情况 ...

  9. linux系统 (实验一)实验楼的课程笔记

    实验楼的课程笔记 tab 键是命令补全 输入 tail  find / 立刻卡住 这时候ctrl+c 可以终端当前指令 一些常用的指令 Ctrl+d 键盘输入结束或退出终端 Ctrl+s 暂停当前程序 ...

  10. SDUT-3399_数据结构实验之排序二:交换排序

    数据结构实验之排序二:交换排序 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 冒泡排序和快速排序都是基于"交 ...