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框架的生命周期:从发出请求到响应完成相关推荐

  1. 自学Python第二十二天- Django框架(一)创建项目、APP、快速上手、请求和响应流程、模板、数据库操作

    Django 框架是一个基于 python 的重量级的 web 开发框架,现今很多大公司大项目都是使用 Django 框架.采用了 MVC(model view controller) 的框架模式,p ...

  2. JavaWeb框架(一):Web入门,Http的请求和响应,https介绍,Web实战自定义服务器

    Servlet入门 MVC实战项目 仓储管理系统 JavaWeb入门介绍 Http协议 Http请求数据格式 Http响应数据格式 Web实战Demo:自定义服务器 对比Https协议 总结 Redi ...

  3. Spring框架学习day_01: 框架配置方式/ 管理对象的作用域/ 生命周期/ 组件扫描/ 单例模式:“懒汉式“,“饿汉式“

    1. Spring框架的作用 Spring框架的主要作用是创建对象和管理对象. 创建对象:类似于User user = new User(); 管理对象:随时可以通过Spring框架获取对象,甚至Sp ...

  4. 生命周期组件框架:带有多状态机的单实现类

    ServiceOrder生命周期元数据 @StateMachine public interface ServiceOrderLifecycleMeta extends OrderLifecycleM ...

  5. RXJava2响应式编程框架设计三---Rxjava2背压、生命周期

    在上一次https://www.cnblogs.com/webor2006/p/12348890.html中已经完成了对RxJava2的整个线程切换原理的详细剖析了,这次继续来学习它其它比较重要的知识 ...

  6. java中bean的定义有哪些_详解Java的Spring框架中bean的定义以及生命周期

    bean的定义形成应用程序的骨干是由Spring IoC容器所管理的对象称为bean.bean被实例化,组装,并通过Spring IoC容器所管理的对象.这些bean由容器提供,例如,在XML的定义, ...

  7. thinkphp5 mysql长连接_tp5(thinkPHP5)框架连接数据库的方法示例

    本文实例讲述了thinkPHP5框架连接数据库的方法.分享给大家供大家参考,具体如下: 1.配置文件目录 tp5applicationdatabase.php 通过配置文件来连接.. 也可以通过方法链 ...

  8. think php ajax分页,thinkPHP5框架实现基于ajax的分页功能示例

    本文实例讲述了thinkPHP5框架实现基于ajax的分页功能.分享给大家供大家参考,具体如下: 最近一个页面的选项卡又牵扯到ajax分页,所以研究了一下tp5的ajax分页使用方法 首先看一下tp5 ...

  9. php框架中什么是渲染,thinkPHP5框架渲染模板的3种方式简述

    本文实例讲述了thinkPHP5框架渲染模板的3种方式.分享给大家供大家参考,具体如下: 默认情况下,控制器的输出全部采用return的方式,无需进行任何的手动输出,系统会自动完成渲染内容的输出. 在 ...

最新文章

  1. asp.net数据绑定之Eval和Bind区别
  2. TensorFlow for Hackers - Part III
  3. c语言如何让数组的两个数据调换位置_浅论数据结构
  4. Android内部存储与外部存储解析
  5. Lazy延迟实例对象
  6. 面向对象 (接口 Interface)
  7. aiohttp 高并发web服务_UE4 unity3d连接高并发http服务器
  8. 纯CSS圆角框3-圆角化图片
  9. 赏析角度有哪些_名句鉴赏题从哪些角度入手鉴赏?一线名师告诉你:五个角度...
  10. 新疆计算机一级考试excel公式,2020年XX专业技术人员继续教育公需课《Excel快速统计》试题及答案...
  11. centos7 搭建三主三从 redis5.0集群
  12. win10 彻底卸载docker
  13. pandas 日期比较大小_pandas 对日期类型数据的处理
  14. 关于ROS(Robot OS 机器人操作系统)
  15. softmax回归从零开始实现
  16. leaflet实现自定义线、矩形和扇形的绘制
  17. 题解 CF186A 【Comparing Strings】
  18. char str[10]; str=string;
  19. 解决IDEA中pom.xml中不能自动加载jar包
  20. 计算机毕业设计(附源码)python医院预约挂号系统

热门文章

  1. SAP Spartacus module 延迟加载和正常加载的 chunk 内容差异
  2. SAP Commerce Cloud UI 的用户会话管理
  3. Angular ɵɵelementStart和ɵɵText的工作原理
  4. SAP CRM WebClient UI上将text area里的文本清空的后台处理
  5. 使用SAP WebIDE消费API Portal里创建的API时的错误消息
  6. Method 'GET_ENTITYSET' not implemented in data provider class - correct case
  7. SAP ui5 control lifecycle - registration and deregistration
  8. 如何处理UI5一般性错误Cannot read property md of undefined
  9. Marketing Cloud launchpad中的meta标签
  10. equipment hierarchy download不完整的一个原因