这里只贴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. X级联动

    前端数据 @{ ViewBag.Title = "Index"; } <script src="~/Scripts/jquery-1.10.2.js"&g ...

  2. 微信小程序支付接入注意点

    一.微信支付后台服务器部署 服务器采用ubuntu16.04 + php7.0 + apache2.0. 微信支付后台服务使用了curl 和 samplexml ,因此php.ini配置中必须开启这两 ...

  3. [android] 创建模拟器遇到的常见错误

    1.错误提示: invalid command line sdk安装目录有中文添加ANDROID_SDK_HOME环境变量,指向sdk安装目录2.模拟器无法安装应用模拟器开启其实是开启了的程序占用这个 ...

  4. Azure WebJob-Custom Schedule for Azure Web Job Timer Triggers

    如果想实现Azure Schedule WebJob,有两种方法: 1. 配置CRON Expression,网上有在线CRON配置工具,根据业务需要配置即可 注意:Azure的CRON Expres ...

  5. SSM登陆拦截器实现

    首先在springmvc中配置拦截器 <!-- 配置拦截器 --> <mvc:interceptors> <mvc:interceptor> <!-- 拦截所 ...

  6. iOS-----------关于组件化

      打一个比较形象的比喻,把APP比作我们的人体,把胳膊.大腿.心.肝.肺这些人体器官比作组件,各个器官分别负责他们各自的功能,但是他们之间也有主次之分,试想我们的胳膊.大腿等是不能独立完成某个任务的 ...

  7. 在非activity类调用startActivityForResult

    对于这个问题,今天折腾了一下午,不是说我不懂得怎么调用,而是我用了看似正确的调用方式,而其实这是一个坑. 我用了下面这种方式: ((Activity) mContext).startActivityF ...

  8. Xutils, OKhttp, Volley, Retrofit对比

    Xutils这个框架非常全面,可以进行网络请求,可以进行图片加载处理,可以数据储存,还可以对view进行注解,使用这个框架非常方便,但是缺点也是非常明显的,使用这个项目,会导致项目对这个框架依赖非常的 ...

  9. JS中简单的二级城市联动

    代码奉上: <!DOCTYPE html><html><head>    <meta charset="UTF-8">    < ...

  10. echarts中legend如何换行

    lengend data数据中若存在'',则表示换行,用''切割.