框架入口文件
这个文件在哪里?位于/ThinkPHP/
目录下。
这个文件有什么作用?
- 定义常量
- 加载核心 Think类
- 应用初始化
请看下文分解。
定义常量
_beginTime
记录开始运行时间
$GLOBALS['_beginTime'] = microtime(TRUE);
这里出现了一个数组$GLOBALS[]
。
PHP手册中指出:$GLOBALS — 引用全局作用域中可用的全部变量。
我们可以输出这个变量看看:
print_f($GLOBALS);
可以看到类似下面的结果:
Array ( [_GET] => Array ( )
[_POST] => Array ( )
[_COOKIE] => Array ( )
[_FILES] => Array ( )
[GLOBALS]...
);
我们可以利用它来定义全局变量。
在上面代码中定义了一个_beginTime
变量,用以记录当前时间,以后后面来统计应用执行时间。
内存初始使用量
// 记录内存初始使用
define('MEMORY_LIMIT_ON',
function_exists('memory_get_usage'));
if(MEMORY_LIMIT_ON)
$GLOBALS['_startUseMems'] = memory_get_usage();
获取内存量以便程序后续分析。
其他常量
还有许多常量如下表:
变量名 | 描述 |
---|---|
THINK_VERSION | 定义 ThinkPHP 的版本 |
URL_COMMON | 定义路由为普通模式 |
URL_PATHINFO | 定义路由为 PATHINFO 模式 |
URL_REWRITE | 定义路由为 REWRITE 模式 |
URL_COMPAT | 定义路由为 兼容模式 |
EXT | 定义类的后缀 |
LANG_PATH | |
THINK_PATH | 定义 Think 的核心库的目录 |
APP_PATH | 定义用户程序的目录 |
APP_STATUS | 定义应用的状态 |
APP_DEBUG | 定义是否处于开发模式 |
RUNTIME_PATH | 定义运行时目录 |
LIB_PATH | 定义库的目录 |
CORE_PATH | 定义核心库的目录 |
BEHAVIOR_PATH | |
MODE_PATH | |
VENDOR_PATH | |
COMMON_PATH | |
CONF_PATH | 定义配置目录 |
HTML_PATH | 定义HTML目录 |
LOG_PATH | 定义日志目录 |
TEMP_PATH | 定义临时目录 |
DATA_PATH | 定义数据目录 |
CACHE_PATH | 定义缓存的目录 |
CONF_EXT | 定义配置文件的扩展名 |
CONF_PARSE | |
ADDON_PATH | |
MAGIC_QUOTES_GPC | |
IS_CGI | |
IS_WIN | 定义是否处于 Windows 系统环境 |
IS_CLI |
加载核心 Think 类
核心 Think 类在哪里?查看代码:
require CORE_PATH.'Think'.EXT;
CORE_PATH
这个常量值为:/ThinkPHP/Library/Think/
。
EXT
这个常量值为:.class.php
。
在这里,在这里看见你:/ThinkPHP/Library/Think/Think.class.php
应用初始化
应用初始化,这里调用了Think
应到类的静态方法start
。
Think\Think::start();
应用初始化做了哪些工作?请看下文。