ThinkPHP执行流程分析.pptVIP

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
yhustc@ThinkPHP ThinkPHP执行流程分析 前言 要分析什么? 分析一下从访问index.php到加载Action文件、调用用户指定操作的过程。 达到什么样的效果? 分析一下在进入自己指定的模块与操作之前发生过一些什么事情,以及如何通过index.php进入指定的模块与操作,让你能搞明白这些事情,要的就这效果。 入口文件的定义 ?php define(THINK_PATH, ../ThinkPHP); //定义项目名称,如果不定义,默认为入口文件名称 define(APP_NAME, web); define(APP_PATH, ./web); //加载ThinkPHP框架公共入口文件 require(THINK_PATH./ThinkPHP.php); //实例化一个网站应用实例 $App = new App(); //执行应用程序 $App-run(); ? ThinkPHP.php里面的干了些啥 记录开始执行时间 $GLOBALS[‘_beginTime’](20行) 检测 THINK_PATH、 APP_NAME、 APP_PATH、 RUNTIME_PATH 定义,如果没有则创建(23-26行) //不知道你发现没有,以index.php这基准,通过APP_PATH,可以组装出任意路径 检查是否有核心缓存~runtime.php(28行) if(file_exists(RUNTIME_PATH.~runtime.php)) { // 加载框架核心缓存文件 // 如果有修改核心文件请删除该缓存 require RUNTIME_PATH.~runtime.php; }else{ 进入else } 记录加载文件时间 $GLOBALS[_loadTime]; require thinkphp.php完成 ThinkPHP.php 32行的else 加载系统定义文件 ThinkPHP\Common\defines.php 和公共函数文件 ThinkPHP\Common\functions.php(34-36行) 如果项目编译缓存目录不存在,则自动创建项目目录结构(41行buildAppDir()是在functions.php中定义的函数) 加载系统核心类库(包括ThinkPHP\LIB\THINK下级各子目录下的 Base、App、Action、Model、View、ThinkException、Log)(45-54行) 如果 PHP 版本低于 5.2.0 则加载兼容函数库 ThinkPHP\Common\compat.php(76行) 生成核心编译缓存~runtime.php(生成在APP_PATH\ Temp\目录下) 退出else 进入ThinkPHP\Lib\Think\Core\App 入口文件中调用的$App-run() public function run() { $this-init(); $this-exec(); return ; } $App-run()返回的时候,对一个请求的处理就算完成了 App.class.php的init函数(1) 设定错误和异常处理机制(set_error_handler和set_exception_handler)(92-93行) 项目预编译并载入(97-103行) if(file_exists(RUNTIME_PATH.~app.php) filemtime(RUNTIME_PATH.~app.php)filemtime(CONFIG_PATH.config.php)) { // 直接读取编译后的项目文件 C(include RUNTIME_PATH.~app.php); }else{ // 预编译项目 $this-build(); } 设置时区支持(106-107行) Session过滤器检查、 session初始化(109-115行) App.class.php的init函数(2) 检查并加载插件(118-120行) if(C(THINK_PLUGIN_ON)) { $this-loadPlugIn(); } URL分析和调度(126-135行) if(C(DISPATCH_ON)) { if( Think== C(DISPATCH_NAME) ) { // 使用内置的ThinkDispatcher调度器 import(Think.Util.Dispatcher); Dispatcher::dispatch(); }else{ // 加载第三方调度器 apply_filter(app_dispatch); } } App.class.ph

文档评论(0)

max + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档