ThinkPHP执行流程_第1页
ThinkPHP执行流程_第2页
ThinkPHP执行流程_第3页
ThinkPHP执行流程_第4页
ThinkPHP执行流程_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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、Mod

3、el、View、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_handle

4、r和set_exception_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-

5、90行) if(!defined(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(

6、C(HTML_CACHE_ON) / 开启静态缓存 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

7、 和 POST), 如果未定义,则获取默认模块名 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/Model/Action/的Action部分,回到init,App.class.php的exec函数(1),1.创建Action控制器实例(379行) A()函数 2.获取当前操作名(400行) $action = ACTION_NAME; 3.执行操作(401-418行) / 执行操作链 最多只能有一个输出 1.执行前置操作 _before_.$action 2.执行当前操作 $action 3.执行后缀操作 _after_.$action exec执行完毕,一个请求处理完成了,小结,T

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论