这里只贴index.php的代码, 深入了解的请访问   
https://laravel-china.org/articles/10421/depth-mining-of-laravel-life-cycle

<?php

/**
* Laravel - A PHP Framework For Web Artisans
* 一个为艺术而生的PHP框架
* 生命周期一共分为三个阶段
* 1、 加载依赖
* 2、 实例化
* 3、 接收请求并响应
* @package Laravel
* @author Taylor Otwell <taylor@laravel.com>
*/ /*
|--------------------------------------------------------------------------
| Register The Auto Loader 注册自动加载类
|--------------------------------------------------------------------------
|
| Composer provides a convenient, automatically generated class loader for
| our application. We just need to utilize it! We'll simply require it
| into the script here so that we don't have to worry about manual
| loading any of our classes later on. It feels nice to relax.
|
*/ /**
* 生命周期第一阶段 加载依赖
* 在__DIR__.'/../bootstrap/autoload.php'中,
* 先设置程序开始时间戳,
* 再使用composer/autoload_real.php::getLoader()获取类名与类文件的映射然后注册组件类(根据PHP版本不同以及其他条件,分为静态注册和非静态注册)
* 如果存在编译的缓存文件,则引入
*/
require __DIR__.'/../bootstrap/autoload.php'; /*
|--------------------------------------------------------------------------
| Turn On The Lights
|--------------------------------------------------------------------------
|
| We need to illuminate PHP development, so let us turn on the lights.
| This bootstraps the framework and gets it ready for use, then it
| will load up this application so that we can run it and send
| the responses back to the browser and delight our users.
|
*/ /**
* 生命周期第二阶段,创建Laravel应用实例
* 创建 APP 容器、注册应用路径、注册基础服务提供者(绑定内核),并在绑定内核时 配置中间件和引导程序等参数
*/
$app = require_once __DIR__.'/../bootstrap/app.php'; /*
|--------------------------------------------------------------------------
| Run The Application
|--------------------------------------------------------------------------
|
| Once we have the application, we can handle the incoming request
| through the kernel, and send the associated response back to
| the client's browser allowing them to enjoy the creative
| and wonderful application we have prepared for them.
|
*/ /**
* 声明周期第三阶段,接收请求并响应
*/
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
//使用容器$app的make()方法实例化Http内核,
// 在vendor/Laravel/framework/src/Illuminate/Foundation/Http/Kernel.php文件中
// 构造函数内将在 HTTP 内核定义的 中间件组 注册到 路由器, 之后就可以调用 这些中间件 处理请求
// 构造函数接收 APP 容器 和 路由器 两个参数 $response = $kernel->handle(
$request = Illuminate\Http\Request::capture()
//请求实例 Illuminate\Http\Request 的 capture() 方法内部通过 Symfony 实例创建一个 Laravel 请求实例。
//这样我们就可以获取到用户请求报文的相关信息了,以及全局变量等信息。 //handle() 方法接收一个 HTTP 请求,
//首先,将 $request 实例注册到 APP 容器 供后续使用;
//之后,清除之前 $request 实例缓存;
//然后,通过$this->bootstrap();启动「引导程序」;即我们第二阶段创建容器时 配置的引导程序 bootstrappers
//然后,发送请求至路由,通过路由实例,查找routes/web.php中路由,最终匹配到控制器或匿名函数。
//随即进入到请求处理的流程
//并最终生成一个 HTTP 响应并返回到这里。
); /**
* 经过一系列漫长的处理,终于来到最后 -> 发送响应
*/
$response->send();
//发送响应由 Illuminate\Http\Response 父类 Symfony\Component\HttpFoundation\Response 中的 send() 方法完成。 $kernel->terminate($request, $response);
//程序终止,完成终止中间件的调用

Laravel 入口文件解读及生命周期的更多相关文章

  1. Laravel 5.x 请求的生命周期(附源码)

    Laravel最早接触是刚开始实习的时候,那时通过网上的学习资料很快便上手,开发模块接口.后来没有什么深入和总结,但是当我刚开始学Laravel的时候,我对Laravel最大的认识就是,框架除了路由. ...

  2. Vue ---- 组件文件分析 组件生命周期钩子 路由 跳转 传参

    目录 Vue组件文件微微细剖 Vue组件生命周期钩子 Vue路由 1.touter下的index.js 2.路由重定向 3.路由传参数 补充:全局样式导入 路由跳转 1. router-view标签 ...

  3. laravel请求到响应的生命周期

    请求到响应的核个执行过程,主要可以归纳为四个阶段,即程序启动准备阶段.请求实例化阶段.请求处理阶段.响应发送和程序终止阶段. public\index.php中有这么一段代码 $app = requi ...

  4. JVM与垃圾回收机制(GC)和类的生命周期

    JVM运行时数据区 GC(垃圾回收机制) 什么是垃圾回收机制: 在系统运行过程中,会产生一些无用的对象,这些对象占据着一定的内存,如果不对这些对象清理回收无用的是对象,可能会导致内存的耗尽,所以垃圾回 ...

  5. Vue ---- 项目与环境搭建 初始项目结构 Vue生命周期

    目录 1. vue环境搭建 2. Vue项目搭建 pycharm配置并启动vue项目 3 . 认识项目 1. vue项目目录结构 2. 配置文件:vue.config.js 3. main.js 4. ...

  6. Yii2 源码分析 入口文件执行流程

    Yii2 源码分析  入口文件执行流程 1. 入口文件:web/index.php,第12行.(new yii\web\Application($config)->run()) 入口文件主要做4 ...

  7. 【OSGi】OSGi生命周期

    1 生命周期管理 对于非模块化应用,生命周期将应用作为一个整体来操作: 而对于模块化应用,则可以以细粒度的方式来管理应用的某一个独立部分. OSGi生命周期管理 OSGi生命周期层有两种不同的作用: ...

  8. jsp学习与提高(一)——JSP生命周期、三大指令及动作

    1.jsp定义: 1.1以java语言为脚本语言,运行在服务端的程序: 1.2处理客户请求,生成页面 1.3其本质是个sevlet会生成.java文件编译后再生成.class文件 2.jsp生命周期( ...

  9. JSP和selevt 生命周期详解(JSP的生命周期和select很像,jsp底层就是一个selevt)

    JSP: JSP的生命周期指从创建到销毁的整个过程.分为以下几个阶段: 1:编译阶段:servlet引擎编译servlet源文件,生成servlet类.当浏览器请求JSP页面时,JSP引擎会首先去检查 ...

随机推荐

  1. ubuntu所有php扩展php-7.0扩展列表

    sudo apt-get install php7.0-bcmath sudo apt-get install php7.0-bz2 sudo apt-get install php7.0-calen ...

  2. 【转】NotificationCopat.Builder全部设置

    1.方法:setContentTitle(CharSequence title)   功能:设置通知栏标题.   例子:setContentTitle("测试标题"). 2.方法: ...

  3. 解决No 'Access-Control-Allow-Origin' header is present on the requested resource.跨域问题(后台(java)解决方法)

    附:前端常见跨域解决方案(全) 跨域错误 解决方法 在后台写一个过滤器来改写请求头 附上一个前端不知所以然的后台java代码: public class CorsFilter implements F ...

  4. 解决Centos7 yum 出现could not retrieve mirrorlist 错误

    刚通过VMware12安装了centos7.x后,使用ip addr查看centos局域网的ip发现没有,使用yum安装一些工具包时也出现报错: Loaded plugins: fastestmirr ...

  5. arcgis for js学习之Graphic类

    arcgis for js学习之Graphic类 <title>Graphic类</title> <meta charset="utf-8" /> ...

  6. CPP笔记_函数返回局部变量

    本篇笔记记录的是关于返回函数中的局部值. 我们知道,在函数中创建的局部变量会随着函数的调用过程的结束,也即其对应函数栈帧的清除,而结束其生命周期.那么,如果我们把这个局部变量返回,就有可能存在该变量对 ...

  7. 原生Js交互之DSBridge

    文章链接:https://mp.weixin.qq.com/s/Iqd0dKM-ZW4UwkIgSTnvYg 在上一篇文章「android 记一次富文本加载之路」中 介绍了关于android加载富文本 ...

  8. Java新知识系列 八

    什么是死锁,死锁的原因和必要条件:       []什么是死锁,死锁的原因和必要条件: 死锁:死锁的原因在于进程在等待其它进程占有的某些资源,而自身的资源又被其它进程等待着,造成了死循环. 出现死锁的 ...

  9. 【English】二、It作为代词,可以代指什么

    it的用法 一.用作人称代词: 1.指代事物: — What’s this? — It’s a cat.2.指代人:常用于不知对方性别时,比如:询问敲门人或打电话时询问对方是谁,或者用来指代婴儿. ( ...

  10. QQ邮箱开启SMTP方法如何授权

    步骤一: 在打开的邮箱中心,进入设置 步骤二 从邮箱设置中心,进入帐户 步骤三 在这里可以看到POP3/SMTP服务被关闭了,因此客户端会收不到邮件,我们来开启它,查看该服务为已开启时,就可以用客户端 ...