php 追查框架生命周期,ThinkPHP5框架的生命周期:从发出请求到响应完成
URL请求的生命周期
客户端通过URL发送访问请求
服务器端返回请求数据
TP5的生命周期
入口文件-->引导文件-->注册自动加载-->注册错误和异常机制-->应用初始化-->URL访问检测-->路由检测-->分发请求-->响应输出-->应用结束
1.入口文件
-1.文件名:index.php;
-2.位置:public/index.php;
-3.用户通过入口文件,发起服务请求,是整个应用的入口与起点;
-4.任务:定义常量,加载引导文件,不要放任何业务处理代码;
-5.代码: //定义项目路径
define('APP_PATH',DIR.'/../application/');
//加载框架引导文件
require DIR.'/../thinkphp/start.php';
2.引导文件
-1.文件名:start.php;
-2.位置:thinkphp/start.php;
-.执行: 加载常量-->加载环境变量-->注册自动加载-->注册错误与异常-->加载管理配置-->执行应用
3.注册自动加载
-1.类方法:Loader::register();
-2.作用:将所有符号规范的类库(包括Composer依赖加载的第三方类库)自动加载;
-3.执行流程: 注册自动加载方法: think\Loader::autoload --> 注册系统命名空间 --> 加载类库映射文件 --> 注册Composer自动加载 --> 注册extends扩展目录
4.注册错误和异常机制
执行Error::register()注册错误和异常处理1机制.
由三部分组成:
-1.应用关闭方法:think\Error::appShutdown
-2.错误处理方法:think\Error::appError
-3.异常处理方法:think\Error::appException
5.应用初始化
严格意义上讲,前面的内容都可算做应用初始化部分:
加载公共配置 --> 加载公共扩展配置 -->加载应用状态配置 --> 加载别名配置 -->
--> 加载行为定义 --> 加载公共函数文件 -->注册应用命名空间 --> 加载扩展函数文件 --> 设置默认时区 --> 加载系统语言包
6.URL访问检测
URL必须是PATH_INFO格式才允许继续运行.
1.PATH_INFO标准格式:
http://域名/index.php/模块名/控制器名/操作名/参数键值对
举例: http://tp5.com/index.php/index/user/add/id/10/name/peter
2.PHTH_INFO兼容格式:
http://域名/index.php?s=/模块名/控制器名/操作名&参数键值对
举例: http://tp5.com/index.php?s=index/user/add&id=10&name=peter
7.路由检测
-1.如果开启了url_route_on参数,则首先进行URL路由检测;
-2.一旦检测到匹配的路由,根据路由规则会注册到相应的URL调度;
-3.TP5支持的路由规则如下:
路由到模块/控制器/操作;(这是默认路由模式,如果关闭路由或者路由检测无效则执行该模式)
路由到外部重定向地址;
路由到控制器方法;
路由到闭包函数;
路由到类的方法;
8.分发请求
-1.将用户请求分发到对应的路由地址,完成应用的业务逻辑并返回数据;
-2.统一使用return返回数据,不要用echo直接输出;
-3.如非必要,请不要使用exit或者die中断执行;
-4.分发请求支持TP5的五种路由地址模式:
路由到模块/控制器/操作; 路由到外部重定向地址; 路由到控制器方法; 路由到闭包函数; 路由到类方法;
9.响应输出
-1.控制器正常返回的数据通常是:字符串(String)或数组(Array)格式;
-2.统一使用return返回数据,而不是直接输出,这样可以自动调用
Response::send()方法将最终的返回数据输出到页面或者客户端,
并自动转换成default_return_type参数配置的格式(XML,JSON等).
return 'ThinkPHP教学教程';
10.应用结束
-1.响应输出完成后,应用生命周期基本结束,可以写日志报告啦;
-2.日志包括二部分:用户调试输出和系统自动生成;
-3.日志在应用结束后,自动写入.
总结:介绍了TP5框架中,一个应用从发出url请求,到正确获取到响应数据的完整流程.这里只是快速浏览,
php 追查框架生命周期,ThinkPHP5框架的生命周期:从发出请求到响应完成相关推荐
- 自学Python第二十二天- Django框架(一)创建项目、APP、快速上手、请求和响应流程、模板、数据库操作
Django 框架是一个基于 python 的重量级的 web 开发框架,现今很多大公司大项目都是使用 Django 框架.采用了 MVC(model view controller) 的框架模式,p ...
- JavaWeb框架(一):Web入门,Http的请求和响应,https介绍,Web实战自定义服务器
Servlet入门 MVC实战项目 仓储管理系统 JavaWeb入门介绍 Http协议 Http请求数据格式 Http响应数据格式 Web实战Demo:自定义服务器 对比Https协议 总结 Redi ...
- Spring框架学习day_01: 框架配置方式/ 管理对象的作用域/ 生命周期/ 组件扫描/ 单例模式:“懒汉式“,“饿汉式“
1. Spring框架的作用 Spring框架的主要作用是创建对象和管理对象. 创建对象:类似于User user = new User(); 管理对象:随时可以通过Spring框架获取对象,甚至Sp ...
- 生命周期组件框架:带有多状态机的单实现类
ServiceOrder生命周期元数据 @StateMachine public interface ServiceOrderLifecycleMeta extends OrderLifecycleM ...
- RXJava2响应式编程框架设计三---Rxjava2背压、生命周期
在上一次https://www.cnblogs.com/webor2006/p/12348890.html中已经完成了对RxJava2的整个线程切换原理的详细剖析了,这次继续来学习它其它比较重要的知识 ...
- java中bean的定义有哪些_详解Java的Spring框架中bean的定义以及生命周期
bean的定义形成应用程序的骨干是由Spring IoC容器所管理的对象称为bean.bean被实例化,组装,并通过Spring IoC容器所管理的对象.这些bean由容器提供,例如,在XML的定义, ...
- thinkphp5 mysql长连接_tp5(thinkPHP5)框架连接数据库的方法示例
本文实例讲述了thinkPHP5框架连接数据库的方法.分享给大家供大家参考,具体如下: 1.配置文件目录 tp5applicationdatabase.php 通过配置文件来连接.. 也可以通过方法链 ...
- think php ajax分页,thinkPHP5框架实现基于ajax的分页功能示例
本文实例讲述了thinkPHP5框架实现基于ajax的分页功能.分享给大家供大家参考,具体如下: 最近一个页面的选项卡又牵扯到ajax分页,所以研究了一下tp5的ajax分页使用方法 首先看一下tp5 ...
- php框架中什么是渲染,thinkPHP5框架渲染模板的3种方式简述
本文实例讲述了thinkPHP5框架渲染模板的3种方式.分享给大家供大家参考,具体如下: 默认情况下,控制器的输出全部采用return的方式,无需进行任何的手动输出,系统会自动完成渲染内容的输出. 在 ...
最新文章
- asp.net数据绑定之Eval和Bind区别
- TensorFlow for Hackers - Part III
- c语言如何让数组的两个数据调换位置_浅论数据结构
- Android内部存储与外部存储解析
- Lazy延迟实例对象
- 面向对象 (接口 Interface)
- aiohttp 高并发web服务_UE4 unity3d连接高并发http服务器
- 纯CSS圆角框3-圆角化图片
- 赏析角度有哪些_名句鉴赏题从哪些角度入手鉴赏?一线名师告诉你:五个角度...
- 新疆计算机一级考试excel公式,2020年XX专业技术人员继续教育公需课《Excel快速统计》试题及答案...
- centos7 搭建三主三从 redis5.0集群
- win10 彻底卸载docker
- pandas 日期比较大小_pandas 对日期类型数据的处理
- 关于ROS(Robot OS 机器人操作系统)
- softmax回归从零开始实现
- leaflet实现自定义线、矩形和扇形的绘制
- 题解 CF186A 【Comparing Strings】
- char str[10]; str=string;
- 解决IDEA中pom.xml中不能自动加载jar包
- 计算机毕业设计(附源码)python医院预约挂号系统
热门文章
- SAP Spartacus module 延迟加载和正常加载的 chunk 内容差异
- SAP Commerce Cloud UI 的用户会话管理
- Angular ɵɵelementStart和ɵɵText的工作原理
- SAP CRM WebClient UI上将text area里的文本清空的后台处理
- 使用SAP WebIDE消费API Portal里创建的API时的错误消息
- Method 'GET_ENTITYSET' not implemented in data provider class - correct case
- SAP ui5 control lifecycle - registration and deregistration
- 如何处理UI5一般性错误Cannot read property md of undefined
- Marketing Cloud launchpad中的meta标签
- equipment hierarchy download不完整的一个原因