收藏 分享(赏)

ThinkPHP执行流程.ppt

上传人:fmgc7290 文档编号:4377064 上传时间:2018-12-26 格式:PPT 页数:11 大小:500.50KB
下载 相关 举报
ThinkPHP执行流程.ppt_第1页
第1页 / 共11页
ThinkPHP执行流程.ppt_第2页
第2页 / 共11页
ThinkPHP执行流程.ppt_第3页
第3页 / 共11页
ThinkPHP执行流程.ppt_第4页
第4页 / 共11页
ThinkPHP执行流程.ppt_第5页
第5页 / 共11页
点击查看更多>>
资源描述

1、流程大纲,加载公共入口文件 项目初始化Init 项目预编译 URL分析Dispather 获取模块和操作名 项目执行exec 执行控制器的操作 调用模块获取数据 输出视图,入口文件的定义,run(); ?,ThinkPHP.php里面的干了些啥,记录开始执行时间 $GLOBALS_beginTime(19行) 检测 THINK_PATH、 APP_NAME、 APP_PATH、 RUNTIME_PATH 定义,如果没有则创建(20-26行)/不知道你发现没有,以index.php这基准,通过APP_PATH,可以组装出任意路径 检查开启ALLINONE模式 (22行)把核心编译缓存和项目编译缓

2、存合并到一个文件里面去,并且过滤掉一些运行模式不需要执行的代码,并且对于用户的自定义常量全部统一定义,不再进行额外的检测。 检查是否有核心缓存runtime.php(33行) if(file_exists(RUNTIME_PATH.runtime.php) / 加载框架核心缓存文件require RUNTIME_PATH.runtime.php; else/1.加载define.php和functions.php /2.如果项目编译缓存目录不存在,则自动创建项目目录结构/3.加载系统核心类库(包括ThinkPHPLIBTHINK下级各子目录下的 Base、App、Action、Model、Vi

3、ew、ThinkException、Log)/4.如果 PHP 版本低于 5.2.0 则加载兼容函数库 /生成核心编译runtime缓存 记录加载文件时间 $GLOBALS_loadTime;,进入ThinkPHPLibThinkCoreApp,入口文件中调用的$App-run() public function run() $this-init();$this-exec(); return ; $App-run()返回的时候,对一个请求的处理就算完成了,App.class.php的init函数(1),1.设定错误和异常处理机制(39-40行)(set_error_handler和set_ex

4、ception_handler) 2.项目预编译并载入(44-52行)/ 在部署模式下会自动在第一次执行的时候编译项目if(defined(RUNTIME_MODEL)/ 运行模式无需载入项目编译缓存elseif(is_file(RUNTIME_PATH.app.php) 3.设置时区支持(59-60行) 4.允许注册AUTOLOAD方法、 session初始化(62-66行),App.class.php的init函数(2),5. URL分析和调度(71行)执行Dispatcher类的静态方法 dispatch() 。这段代码很不错。 6.加载项目分组公共文件(82-90行)if(!defin

5、ed(GROUP_NAME) define(GROUP_NAME, App:getGroup(); 7.取得模块和操作名称(92-93行)if(!defined(MODULE_NAME) define(MODULE_NAME, App:getModule();if(!defined(ACTION_NAME) define(ACTION_NAME, App:getAction(); 8.加载模块配置文件(95-97行) 9.系统检查(99-104行)App:checkLanguage(); /语言检查App:checkTemplate(); /模板检查if(C(HTML_CACHE_ON) /

6、开启静态缓存 10.项目初始化标签 初始化完成,init返回,App.class.php的getGroup,App.class.php 228行 1. 检查 VAR_MODULE 变量(231行)(包括 GET 和 POST), 如果未定义,则获取默认分组名分组名称解析完毕,也就是http:/server/project/index.php/Model/Action/的project部分,回到init,App.class.php的getModule,App.class.php 186行 1. 检查 VAR_MODULE 变量(189行)(包括 GET 和 POST), 如果未定义,则获取默认模

7、块名 2. 判断URL地址是否区分大小写不区分,小写模块名智能识别方式 index.php/user_type/index/ 识别到 UserTypeAction 模块模块名称解析完毕,也就是http:/server/project/index.php/Model/Action/的Model部分,回到init,App.class.php的getAction,App.class.php 209行 1. 检查 VAR_MODULE 变量(211行)(包括 GET 和 POST), 如果未定义,则获取默认模块名操作名称解析完毕,也就是http:/server/project/index.php/Mo

8、del/Action/的Action部分,回到init,App.class.php的exec函数(1),1.创建Action控制器实例(379行)A()函数 2.获取当前操作名(400行)$action = ACTION_NAME; 3.执行操作(401-418行)/ 执行操作链 最多只能有一个输出1.执行前置操作 _before_.$action2.执行当前操作 $action3.执行后缀操作 _after_.$actionexec执行完毕,一个请求处理完成了,小结,Thinkphp一次网页请求,就是实例化一个网站应用实例 ,并执行应用程序的过程。执行过程$App-run()分为init和exec两部分。这中间还省略了一部分分析,比如RBAC,比如Model相关的代码,VIEW操作解析等,将在下次分享中讨论。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 事务文书

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报