源码阅读-ThinkPHP-3-框架入口文件

框架入口文件

这个文件在哪里?位于/ThinkPHP/目录下。

这个文件有什么作用?

  1. 定义常量
  2. 加载核心 Think类
  3. 应用初始化

请看下文分解。

定义常量

_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();

应用初始化做了哪些工作?请看下文。

你可能感兴趣的:(源码阅读-ThinkPHP-3-框架入口文件)