美文网首页
源码阅读-ThinkPHP-3-框架入口文件

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

作者: 苏近之2017 | 来源:发表于2017-06-06 16:33 被阅读0次

框架入口文件

这个文件在哪里?位于/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-框架入口文件

    框架入口文件 这个文件在哪里?位于/ThinkPHP/目录下。 这个文件有什么作用? 定义常量 加载核心 Thin...

  • 架构师成长之路(内附推荐书籍)

    1. 阅读源码 说到阅读源码,可能很多同学都尝试过去阅读一些开源框架的源码,但是很难找到一个入口点;即便找到入口点...

  • koa2源码解析

    Koa源码解析 整体架构 核心文件只有4个,在lib文件夹下: application.js koa框架的入口...

  • Vuex 2.0 学习笔记(二):源码阅读

    上一章总结了 Vuex 的框架原理,这一章我们将从 Vuex 的入口文件开始,分步骤阅读和解析源码。由于 Vuex...

  • 架构成长学习

    架构成长学习 1. 阅读源码 说到阅读源码,可能很多同学都尝试过去阅读一些开源框架的源码,但是很难找到一个入口点;...

  • Lerna 初始化过程分析

    源码结构 入口文件: 入口文件代码: require('.') 默认加载当前目录下./index.js文件 命令注...

  • Mybatis源码学习(1)--SqlSessionFactor

    Mybatis源码学习(1)--SqlSessionFactoryBuilder 一、源码阅读的入口 阅读Myba...

  • 目录结构

    ThinkPHP.php:框架入口文件Common:框架公共文件Conf:框架配置文件Extend:框架扩展目录L...

  • 源码阅读-ThinkPHP-2-入口文件

    ThinkPHP 框架中的入口文件 分了什么是单一入口机制,我们来看看实际使用过程中的入口文件。 现在大多流行的 ...

  • TestNG框架源码走读三:测试用例执行

    TestNG框架源码走读一:入口TestNG框架源码走读二:测试套执行 上一篇测试套执行主要介绍了SuiteRun...

网友评论

      本文标题:源码阅读-ThinkPHP-3-框架入口文件

      本文链接:https://www.haomeiwen.com/subject/wffnfxtx.html