ThinkPHP执行程序.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ThinkPHP执行程序

流程大纲 加载公共入口文件 项目初始化Init 项目预编译 URL分析Dispather 获取模块和操作名 项目执行exec 执行控制器的操作 调用模块获取数据 输出视图 入口文件的定义 ?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’](19行) 检测 THINK_PATH、 APP_NAME、 APP_PATH、 RUNTIME_PATH 定义,如果没有则创建(20-26行) //不知道你发现没有,以index.php这基准,通过APP_PATH,可以组装出任意路径 检查开启ALLINONE模式 (22行) 把核心编译缓存和项目编译缓存合并到一个文件里面去,并且过滤掉一些运行模式不需要执行的代码,并且对于用户的自定义常量全部统一定义,不再进行额外的检测。 检查是否有核心缓存~runtime.php(33行) if(file_exists(RUNTIME_PATH.~runtime.php)) { // 加载框架核心缓存文件 require RUNTIME_PATH.~runtime.php; }else{ //1.加载define.php和functions.php //2.如果项目编译缓存目录不存在,则自动创建项目目录结构 //3.加载系统核心类库(包括ThinkPHP\LIB\THINK下级各子目录下的 Base、App、Action、Model、View、ThinkException、Log) //4.如果 PHP 版本低于 5.2.0 则加载兼容函数库 //生成核心编译~runtime缓存 } 记录加载文件时间 $GLOBALS[_loadTime]; 进入ThinkPHP\Lib\Think\Core\App 入口文件中调用的$App-run() public function run() { $this-init(); $this-exec(); return ; } $App-run()返回的时候,对一个请求的处理就算完成了 App.class.php的init函数(1) 1.设定错误和异常处理机制(39-40行) (set_error_handler和set_exception_handler) 2.项目预编译并载入(44-52行) // 在部署模式下会自动在第一次执行的时候编译项目 if(defined(RUNTIME_MODEL)){ // 运行模式无需载入项目编译缓存 }elseif(is_file(RUNTIME_PATH.~app.php) (!is_file(CONFIG_PATH.config.php) || filemtime(RUNTIME_PATH.~app.php)filemtime(CONFIG_PATH.config.php))) { // 直接读取编译后的项目文件 C(include RUNTIME_PATH.~app.php); }else{ // 预编译项目 App::build(); } 3.设置时区支持(59-60行) 4.允许注册AUTOLOAD方法、 session初始化(62-66行) App.class.php的init函数(2) 5. URL分析和调度(71行) 执行Dispatcher类的静态方法 dispatch() 。这段代码很不错。 6.加载项目分组公共文件(82-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_

文档评论(0)

泰山之颠 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档