1. 用户URL请求
  2. 调用应用入口文件(通常是网站的index.php)
  3. 载入框架入口文件(ThinkPHP.php)
  4. 记录初始运行时间和内存开销
  5. 系统常量判断及定义
  6. 载入框架引导类(Think\Think)并执行Think::start方法进行应用初始化
  7. 设置错误处理机制和自动加载机制
  8. 调用Think\Storage类进行存储初始化(由STORAGE_TYPE常量定义存储类型)
  9. 部署模式下如果存在应用编译缓存文件则直接加载(直接跳转到步骤22)
  10. 读取应用模式(由APP_MODE常量定义)的定义文件(以下以普通模式为例说明)
  11. 加载当前应用模式定义的核心文件(普通模式是 ThinkPHP/Mode/common.php)
  12. 加载惯例配置文件(普通模式是 ThinkPHP/Conf/convention.php)
  13. 加载应用配置文件(普通模式是 Application/Common/Conf/config.php)
  14. 加载系统别名定义
  15. 判断并读取应用别名定义文件(普通模式是 Application/Common/Conf/alias.php)
  16. 加载系统行为定义
  17. 判断并读取应用行为定义文件(普通模式是 Application/Common/Conf/tags.php)
  18. 加载框架底层语言包(普通模式是 ThinkPHP/Lang/zh-cn.php)
  19. 如果是部署模式则生成应用编译缓存文件
  20. 加载调试模式系统配置文件(ThinkPHP/Conf/debug.php)
  21. 判断并读取应用的调试配置文件(默认是 Application/Common/Conf/debug.php)
  22. 判断应用状态并读取状态配置文件(如果APP_STATUS常量定义不为空的话)
  23. 检测应用目录结构并自动生成(如果CHECK_APP_DIR配置开启并且RUNTIME_PATH目录不存在的情况下)
  24. 调用Think\App类的run方法启动应用
  25. 应用初始化(app_init)标签位侦听并执行绑定行为
  26. 判断并加载动态配置和函数文件
  27. 调用Think\Dispatcher::dispatch方法进行URL请求调度
  28. 自动识别兼容URL模式和命令行模式下面的$_SERVER['PATH_INFO']参数
  29. 检测域名部署以及完成模块和控制器的绑定操作(APP_SUB_DOMAIN_DEPLOY参数开启)
  30. 分析URL地址中的PATH_INFO信息
  31. 获取请求的模块信息
  32. 检测模块是否存在和允许访问
  33. 判断并加载模块配置文件、别名定义、行为定义及函数文件
  34. 判断并加载模块的动态配置和函数文件
  35. 模块的URL模式判断
  36. 模块的路由检测(URL_ROUTER_ON开启)
  37. PATH_INFO处理(path_info)标签位侦听并执行绑定行为
  38. URL后缀检测(URL_DENY_SUFFIX以及URL_HTML_SUFFIX处理)
  39. 获取当前控制器和操作,以及URL其他参数
  40. URL请求调度完成(url_dispatch)标签位侦听并执行绑定行为
  41. 应用开始(app_begin)标签位侦听并执行绑定行为
  42. 调用SESSION_OPTIONS配置参数进行Session初始化(如果不是命令行模式)
  43. 根据请求执行控制器方法
  44. 如果控制器不存在则检测空控制器是否存在
  45. 控制器开始(action_begin)标签位侦听并执行绑定行为
  46. 默认调用系统的ReadHtmlCache行为读取静态缓存(HTML_CACHE_ON参数开启)
  47. 判断并调用控制器的_initialize初始化方法
  48. 判断操作方法是否存在,如果不存在则检测是否定义空操作方法
  49. 判断前置操作方法是否定义,有的话执行
  50. Action参数绑定检测,自动匹配操作方法的参数
  51. 如果有模版渲染(调用控制器display方法)
  52. 视图开始(view_begin)标签位侦听并执行绑定行为
  53. 调用Think\View的fetch方法解析并获取模版内容
  54. 自动识别当前主题以及定位模版文件
  55. 视图解析(view_parse)标签位侦听并执行绑定行为
  56. 默认调用内置ParseTemplate行为解析模版(普通模式下面)
  57. 模版引擎解析模版内容后生成模版缓存
  58. 模版过滤替换(template_filter)标签位侦听并执行绑定行为
  59. 默认调用系统的ContentReplace行为进行模版替换
  60. 输出内容过滤(view_filter)标签位侦听并执行绑定行为
  61. 默认调用系统的WriteHtmlCache行为写入静态缓存(HTML_CACHE_ON参数开启)
  62. 调用Think\View类的render方法输出渲染内容
  63. 视图结束(view_end)标签位侦听并执行绑定行为
  64. 判断后置操作方法是否定义,有的话执行
  65. 控制器结束(action_end)标签位侦听并执行绑定行为
  66. 应用结束(app_end)标签位侦听并执行绑定行为
  67. 执行系统的ShowPageTrace行为(SHOW_PAGE_TRACE参数开启并且不是AJAX请求)
  68. 日志信息存储写入

ThinkPHP框架开发的应用的标准执行流程的更多相关文章

  1. 使用Thinkphp框架开发移动端接口

     本文给大家分享的是使用thinkphp框架开发移动端接口的2种方法,一种是开发API,另外一种是实现移动端访问自动切换移动主题模板,从而实现伪app访问,下面我们就来详细看下如何实现吧. 方案一:给 ...

  2. ThinkPhp框架开发微信支付——刷卡支付

    首先讲讲我遇到的坑: 1.下载了微信的demo,界面如下,一直调试不通过,原来点击链接地址是微信测试的网页地址...要改成自己开发的网页地址.... 2.demo不是用ThinkPhp框架的,我不懂, ...

  3. 利用路由修改thinkphp框架开发的后台地址

    一般我们写前台是home 后台是 admin那么我们的后台是 域名/admin 那我们要随时修改这个地址是非常麻烦的事情开始可能会想到,就是把模块名称改掉,或者分组(3.1版)这样的话不但要改配置,连 ...

  4. 齐博软件 著名的老牌CMS开源系统 X1.0基于thinkphp开发的高性能免费开源PHP开放平台齐博x1.0基于thinkphp框架开发的高性能免费开源系统 主推圈子 论坛 预定拼团分销商城模块

    齐博X1--标签变量大全 1.网站名称: {$webdb.webname} 2.网址: {$webdb[www_url]} {:get_url('home')} 3.网站SEO关键词: 首页:{$we ...

  5. 微信小程序的开发——01小程序的执行流程是怎样的?

    作者:叶小钗 转载至:https://www.cnblogs.com/yexiaochai/p/9346043.html 我们这边最近一直在做基础服务,这一切都是为了完善技术体系,这里对于前端来说便是 ...

  6. 学习Struts--Chap02:Struts2框架各个功能模块和程序执行流程的介绍

    1.Struts2的系统架构: 2.架构中不同Key的作用介绍: servlet Filters:过滤器链,client的全部请求都要经过Filter链的处理. Struts Core:Struts2 ...

  7. (传智博客)tp开发第一天之tp执行流程分析笔记

    1.入口文件index.php 2.ThinkPHP/ThinkPHP.php require THINK_PATH.'Common/runtime.php'; 3.ThinkPHP/Common/r ...

  8. Django Rest framework 框架之认证使用和源码执行流程

    用这个框架需要先安装: pip3 install djangorestframework 如果写了一个CBV的东西,继承了View. # 继承Django里面View class APIView(Vi ...

  9. ThinkPHP 框架执行流程分析

    总体来说,应用的流程涉及到几个文件:Index.phpThinkPHP.phpThink.class.phpApp.class.phpDispatcher.class.phpThinkPHP/Mode ...

随机推荐

  1. C# Guid用法

    GUID(全局统一标识符)是指在一台机器上生成的数字,它保证对在同一时空 中的所有机器都是唯一的.通常平台会提供生成GUID的API.生成算法很有意思,用到了以太网卡地址.纳秒级时间.芯片ID码和许多 ...

  2. DIV撑开

    引用自:http://radzhang.iteye.com/blog/1678734 在CSS排版中,如果一个层中的层使用了float浮动的话,那么就有可能会出现外层没有被内层撑开的情况,如以下代码所 ...

  3. audio,video标签

    <html><head lang="en"> <meta charset="UTF-8"> <title>< ...

  4. 使用traceview进行Android性能测试(转)

    使用traceview进行Android性能测试(转) 使用traceview进行Android性能测试  原文链接:http://www.cnblogs.com/Android-and-androi ...

  5. FZU Problem 2029 买票问题(树状数组)

    当我看到题目是5秒的时候,压根没有想树状数组,一直奔着模拟队列去想了,最后也没搞定,赛后看到大神的题解才恍然大悟,原来如此,题目中有明显的暗示,求前n项和,骤然感叹,自己太low... 果然还是要多做 ...

  6. Winform带dataGridview的Combox控件

    调用控件: public partial class Form1 : Form { public Form1() { InitializeComponent(); //---------------- ...

  7. download plugin update site for offline installation

    Reference Eclipse Launcher Running update manager from command line   好多次为window下的eclipse不能拿到linux下直 ...

  8. jQuery 查找带有某一属性的元素

    $('*[name="username"]') 要在前面加个*表示所有的DOM,如果只是查找带有name属性的DOM的话则是这样的   $('*[name]')//其实, $('[ ...

  9. fuel健康检查Heat失败的原因

    service openstack-heat-engine restart chkconfig --level 2345 openstack-heat-engine on

  10. 关于val(),text(),html()的用法

    直接上demo: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://ww ...