- Laravel的生命周期 A
- PHP 的运行模式
- PHP 的生命周期
- 作用
- Laravel 的生命周期
- 请求过程
- Laravel 的请求步骤
- Laravel的生命周期 B
- laravel/public/index.php
- laravel/boostrap/app.php
- laravel\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php
- Laravel 服务容器模块
- 简介
- 框架调用分析
- Application初始化
- 单元测试Application的bootstrap启动分析
- Http访问Application的bootstrap启动分析
- 重要的类变量数组
- aliases数组
- abstractAliases数组
- instances数组
- bindings数组
- resolved数组
- with 数组
- contextual数组
- tags数组
- extenders数组
- methodBindings数组
- buildStack数组
- reboundCallbacks数组
- serviceProviders数组
- alias
- laravel 的源代码生命周期
世间万物皆有生命周期,当我们使用任何工具时都需要理解它的工作原理,那么用起来就会得心应手,应用开发也是如此。理解了它的原理,那么使用起来就会游刃有余。
在了解 Laravel 的生命周期前,我们先回顾一下PHP 的生命周期。
PHP 的运行模式PHP两种运行模式是WEB模式、CLI模式。
当我们在终端敲入php这个命令的时候,使用的是CLI模式。
当使用Nginx或者别web服务器作为宿主处理一个到来的请求时,使用的是WEB模式。
PHP 的生命周期当我们请求一个php文件时,PHP 为了完成这次请求,会发生5个阶段的生命周期切换:
-
1 模块初始化(MINIT),即调用 php.ini 中指明的扩展的初始化函数进行初始化工作,如 mysql 扩展。
-
2 请求初始化(RINIT),即初始化为执行本次脚本所需要的变量名称和变量值内容的符号表,如 $_SESSION变量。
-
3 执行该PHP脚本。
-
4 请求处理完成(Request Shutdown),按顺序调用各个模块的 RSHUTDOWN 方法,对每个变量调用 unset 函数,如 unset $_SESSION 变量。
-
5 关闭模块(Module Shutdown) , PHP调用每个扩展的 MSHUTDOWN 方法,这是各个模块最后一次释放内存的机会。这意味着没有下一个请求了。
WEB模式和CLI(命令行)模式很相似,区别是:
CLI 模式会在每次脚本执行经历完整的5个周期,因为你脚本执行完不会有下一个请求;
WEB模式为了应对并发,可能采用多线程,因此生命周期1和5有可能只执行一次,下次请求到来时重复2-4的生命周期,这样就节省了系统模块初始化所带来的开销。
可以看出PHP生命周期是很对称的。说了这么多,就是为了定位Laravel运行在哪里,没错,Laravel仅仅运行再 第三个阶段:
理解这些,你就可以优化你的 Laravel 代码,可以更加深入的了解 Laravel 的singleton(单例)。
至少你知道了,每一次请求结束,PHP 的变量都会 unset,Laravel 的 singleton 只是在某一次请求过程中的singleton;
你在 Laravel 中的静态变量也不能在多个请求之间共享,因为每一次请求结束都会 unset。
理解这些概念,是写高质量代码的第一步,也是最关键的一步。因此记住,PHP是一种脚本语言,所有的变量只会在这一次请求中生效,下次请求之时已被重置,而不像Java静态变量拥有全局作用。
Laravel 的生命周期概述
Laravel 的生命周期从public\index.php开始,从public\index.php结束。
下面是 public\index.php的全部源码,更具体来说可以分为四步:
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?