ThinkPHP系统流程

流程图:

参考网址:http://www.thinkphp.cn/topic/35803.html

 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 日志信息存储写入

.

.

转载于:https://www.cnblogs.com/jianxian/p/8722149.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/398374.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

@HTML

Html.TextBoxFor(model > model.ProCategoryNo, new { maxlength "30", readonly true })转载于:https://www.cnblogs.com/dekevin/p/4371794.html

linux下安装配置jdk(解压版)

在linux下登录oracle官网,下载解压版jdk 传送门系统默认下载到“下载”目录中创建要将该文件解压的文件夹:其中 -p 参数代表递归创建文件夹(可以创建多级目录) 进入到下载目录,将下载好的jdk解压到指定目录配置环境…

curl 学习

查看网站所用的web服务器信息,curl -I url #curl -I www.baidu.com转载于:https://www.cnblogs.com/amusic/p/5489378.html

Struts2的Action配置的各项默认值

1 如果没有为action指定class,默认是ActionSupport 2 如果没有为action指定method,默认执行action中的execute()方法 3 如果没有指定result的name属性,默认值为success 转载于:https://www.cnblogs.com/feifeicui/p/8728546.html

谈谈Angular关于$watch,$apply 以及 $digest的工作原理

这篇文章主要是面向那些刚开始学AngularJs和想要了解数据绑定(data-binding)是怎么工作的, 如果你已经熟悉如何使用angularjs了,我强烈建议你不用阅读了。 angularjs使用者想要知道data-binding是如何工作的,就会遇到很…

Tachyon更名为 Alluxio,并发布1.0版本

详细参考 http://www.alluxio.org/releases/alluxio-1-0-0-release.html http://geek.csdn.net/news/detail/57243 http://www.alluxio.org/ Alluxio介绍 Alluxio 1.0版本,作为世界上首款以内存为中心的虚拟分布式存储系统,它能够统一数据访问并成为连接…

[leetcode] N-Queens II

N-Queens II Follow up for N-Queens problem. Now, instead outputting board configurations, return the total number of distinct solutions. 1 class Solution2 {3 private:4 // 试探算法从最右边的列开始。5 void test(long row, long ld, long rd)6 {7 if (row …

php设计模式-工厂设计模式

概念: 工厂设计模式提供获取某个对象的新实例的一个接口,同时使调用代码避免确定实际实例化基类步骤。 很多高级模式都是依赖于工厂模式。 转载于:https://www.cnblogs.com/sjhsszl/p/8729217.html

一幅长文细学MongoDB(四)——索引

4 索引 文章目录4 索引4.1 概述4.2 索引类型4.3 索引创建4.3 删除索引4.4 查看索引执行计划4.5 涵盖的查询4.1 概述 说明:索引支持在MongoDB中高效地查询。如果没有索引,MongoDB必须执行全集合扫描,即扫描集合中的每个文档,以选择…

【转】Android图片加载神器之Fresco-加载图片基础[详细图解Fresco的使用]

Fresco简单的使用—SimpleDraweeView 百学须先立志—学前须知: 在我们平时加载图片(不管是下载还是加载本地图片…..)的时候,我们经常会遇到这样一个需求,那就是当图片正在加载时应该呈现正在加载时的图像,当图片加载失败时应该呈…

对象映射工具AutoMapper介绍

AutoMapper是用来解决对象之间映射转换的类库。对于我们开发人员来说,写对象之间互相转换的代码是一件极其浪费生命的事情,AutoMapper能够帮助我们节省不少时间。 一. AutoMapper解决了什么问题? 要问AutoMapper解决了什么问题? 难道不是对象…

MindSpore安装教程【简洁易懂】

1 官网 MindSpore官网:MindSpore安装指南 2 关注社区 3 下载 查看自己python版本:使用python -V查看自己python版本 进入官网选择相应配置: 验证是否安装成功:python -c "import mindspore;mindspore.run_check()"&a…

php文件操作基本使用方法

<?php/* $fpfopen("tmp.html","r");$strfread($fp,filesize("tmp.html"));$strstr_replace("{title}",新标题,$str);$strstr_replace("{content}",新内容,$str); fclose($fp); $handlefopen(new.html,w); fwrite($handl…

一幅长文细学Vue(十三)——组合式中的生命周期

13 组合式API&#xff08;四&#xff09; 摘要&#xff1a;每个 Vue 组件实例在创建时都需要经历一系列的初始化步骤&#xff0c;比如设置好数据侦听&#xff0c;编译模板&#xff0c;挂载实例到 DOM&#xff0c;以及在数据改变时更新 DOM。在此过程中&#xff0c;它也会运行被…

NodeJs实现自定义分享功能,获取微信授权+用户信息

最近公司搞了个运营活动&#xff0c;入口放在了微信公众号里&#xff0c;好久没碰过微信了&#xff0c;刚拾起来瞬间感觉有点懵逼。。。。似乎把之前的坑又都重新踩了一遍&#xff0c;虽然过程曲折&#xff0c;不过好在顺利完成了&#xff0c;而且印象也更加深刻了&#xff0c;…

git的简单理解及基础操作命令

前端小白一枚&#xff0c;最近开始使用git&#xff0c;于是花了2天看了廖雪峰的git教程(偏实践&#xff0c;对于学习git的基础操作很有帮助哦)&#xff0c;也在看《git版本控制管理》这本书(偏理论&#xff0c;内容完善&#xff0c;很不错)&#xff0c;针对所学内容建了git仓库…

iOS 后台挂起的一些坑

特别说明&#xff1a;后台状态&#xff1a;当前app如果不是作为屏幕中的第一层&#xff0c;呈现显示给用户&#xff0c;那么此时app就是后台状态。锁屏&#xff08;包括&#xff1a;当前应用下锁屏、其他应用下锁屏、桌面锁屏&#xff09; 用户在使用其他应用app2&#xff0c;…

OSGI 生命周期

1 生命周期管理 对于非模块化应用&#xff0c;生命周期将应用作为一个整体来操作&#xff1b;而对于模块化应用&#xff0c;则可以以细粒度的方式来管理应用的某一个独立部分。OSGi生命周期管理 OSGi生命周期层有两种不同的作用&#xff1a; 在应用程序外部&#xff0c;定义了对…

tomcat+nginx+redis实现均衡负载、session共享

在项目运营时&#xff0c;我们都会遇到一个问题&#xff0c;项目需要更新时&#xff0c;我们可能需先暂时关闭下服务器来更新。但这可能会出现一些状况:1.用户还在操作&#xff0c;被强迫终止了(我们可以看日志等没人操作的时候更新&#xff0c;但总可能会有万一)2.不知道的用户…

洛谷 P3184 [USACO16DEC]Counting Haybales数草垛

洛谷 P3184 [USACO16DEC]Counting Haybales数草垛 题目描述 Farmer John has just arranged his NN haybales (1 \leq N \leq 100,0001≤N≤100,000 ) at various points along the one-dimensional road running across his farm. To make sure they are spaced out appropria…