IT教程 | 加入收藏 | 简体 | 繁体
ThinkPHP:Php教程讲解Php函数讲解ThinkPHP
当前位置: 首页 > Php教程 > ThinkPHP

ThinkPHP框架和模式的系统流程讲解

2014-05-15来源:[www.121ask.com]热度:0℃ 【字体:

ThinkPHP框架和模式的系统流程讲解:

我们以访问网址 http://serverName.com/index.php/User/read/id/8 为例,分两种情况来解析下系统的执行流程,首先是调试模式下面的主要执行流程:
序号 流程说明
1 用户访问网站URL地址
2 调用项目的入口文件(这里是index.php)
3 载入系统入口文件ThinkPHP.php
4 判断系统常量,如果没有定义则自动生成
5 载入系统运行时文件runtime.php并定义项目路径常量
6 加载运行时所需的文件(通过调用load_runtime_file函数)
7 后面的流程和调试模式基本相同,只是模板编译过程省略了
8 读取核心基础文件列表和加载系统别名定义文件
9 检查项目相关目录是否存在,不存在则自动生成
10 调用Think::start执行入口
11 设置异常和错误处理机制
12 注册系统自动加载机制
13 预编译当前项目
14 加载框架惯例配置文件
15 读取当前的运行模式如果不是标准模式则加载模式的配置文件(如果存在)
16 加载模式和项目配置文件
17 加载框架底层语言包文件
18 加载当前模式的系统行为定义文件
19 加载当前模式的项目行为定义文件(如果存在)
20 读取核心编译文件列表
21 载入项目公共函数文件
22 加载模式和项目别名定义文件
23 加载系统调试模式配置文件
24 加载项目调试模式配置文件(如果存在)
25 执行当前模式的App::run();运行项目
26 如果定义了动态载入则载入动态项目配置文件和公共文件
27 URL调度,根据URL模式设置分析当前URL地址
28 URL路由检测
29 获取当前URL地址的分组、模块和操作名 及其他参数并生成URL相关常量定义
30 如果检测到分组,则加载分组的配置文件和公共文件
31 检测模板主题并生成模板系统常量
32 设置SESSION_ID 开启Session
33 根据分组和模块名,定位到控制器类并且实例化
34 检查并执行当前操作的前置方法
35 检查当前模块的_initialize方法
36 执行当前操作方法
37 调用控制器的Display方法输出
38 定位当前操作方法的模板文件
39 调用模板引擎解析模板内容并生成模板编译缓存文件
40 读取模板缓存文件进行变量输出,替换解析返回的内容中的需要替换的特殊字符串
41 生成表单令牌哈希
42 输出模板内容到浏览器
43 如果开启页面Trace显示则调用trace信息显示
44 检查并执行当前操作的后置方法
45 项目运行结束,记录内存中的日志信息到文件
如果在部署模式下面(假设已经生成项目编译缓存),基本的系统流程是:
序号 流程说明
1 用户访问网站URL地址
2 调用项目的入口文件,如果替换了入口文件,则调用项目编译缓存文件,并跳过下面的3、4、5流程,直接执行后面的流程。
3 载入系统入口文件ThinkPHP.php
4 判断系统常量,如果没有定义则自动生成
5 载入系统运行时文件runtime.php并定义项目路径常量
6 加载运行时所需的文件(通过调用load_runtime_file函数)
7 加载系统基础函数库文件common.php
系统执行流程根据不同的设置、行为和模式影响,可能存在差异,并不一定完整。但是开启页面Trace功能后,你就可以比较直观的看到当前的文件载入流程,能够帮助你了解系统的执行流程,例如新版的blog示例在关闭调试模式下面一共加载了20个文件,列表如下:
  1. [0] => E:\www\App\Examples\Blog\index.php
  2. [1] => E:\www\App\ThinkPHP\ThinkPHP.php
  3. [2] => E:\www\App\Examples\Blog\Runtime\~runtime.php
  4. [3] => E:\www\App\Examples\Blog\Lib\Behavior\CheckLangBehavior.class.php
  5. [4] => E:\www\App\Examples\Blog\Lib\Action\BlogAction.class.php
  6. [5] => E:\www\App\Examples\Blog\Lib\Action\PublicAction.class.php
  7. [6] => E:\www\App\ThinkPHP\Lib\Core\Model.class.php
  8. [7] => E:\www\App\ThinkPHP\Lib\Core\Db.class.php
  9. [8] => E:\www\App\ThinkPHP\Lib\Driver\Db\DbMysql.class.php
  10. [9] => E:\www\App\Examples\Blog\Runtime\Data\_fields\examples.Category.php
  11. [10] => E:\www\App\Examples\Blog\Lib\Model\AdvModel.class.php
  12. [11] => E:\www\App\Examples\Blog\Runtime\Data\_fields\examples.Blog.php
  13. [12] => E:\www\App\Examples\Blog\Runtime\Data\_fields\examples.Comment.php
  14. [13] => E:\www\App\Examples\Blog\Runtime\Data\_fields\examples.Tag.php
  15. [14] => E:\www\App\Examples\Blog\Lib\Model\BlogViewModel.class.php
  16. [15] => E:\www\App\Examples\Blog\Lib\Model\ViewModel.class.php
  17. [16] => E:\www\App\Examples\Blog\Lib\Model\BlogModel.class.php
  18. [17] => E:\www\App\Examples\Blog\Lib\Model\CategoryModel.class.php
  19. [18] => E:\www\App\Examples\Blog\Lib\ORG\Page.class.php
  20. [19] => E:\www\App\Examples\Blog\Runtime\Cache\2ab73b774a28fab5232b8c752b654018.php
以上IT文章《ThinkPHP框架和模式的系统流程讲解》由名客技术网[www.121ask.com]提供阅读!
推荐软件
    名客技术网是一个免费为广大IT技术人员提供IT教程,绿色软件,asp/php/jsp/java/net等实例视频教程,CMS教程,破解软件下载以及学习相关源码、知识的IT网站。
    名客技术网如果无意之中侵犯了您的版权,请来电告知,本站将在3个工作日内删除 QQ:175352796
    Copyright 2011-2017 Powered by 121ASK.COM, All Rights Reserved.
    备案号:鄂ICP备11013833号-3