ThinkPHP3.1.3源码分析(一) 入口文件分析
扫描二维码
随时随地手机看文章
前言:
有几个月时间没有更新CSDN博客,持之以恒的徽章也灭了,接下来这个几个月会
逐渐更新 主流PHP框架的入门,源码分析,框架对比。加油!
一、示例代码
//文件路径 ThinkPHP/ThinkPHP.php // ThinkPHP 入口文件 // 记录开始运行时间 $GLOBALS['_beginTime'] = microtime(TRUE); // 记录内存初始使用 define('MEMORY_LIMIT_ON',function_exists('memory_get_usage')); if(MEMORY_LIMIT_ON) $GLOBALS['_startUseMems'] = memory_get_usage(); // 系统目录定义 defined('THINK_PATH') or define('THINK_PATH', dirname(__FILE__).'/');/*ThinkPHP 文件目录*/ defined('APP_PATH') or define('APP_PATH', dirname($_SERVER['SCRIPT_FILENAME']).'/');/*项目文件目录*/ defined('APP_DEBUG') or define('APP_DEBUG',false); // 是否调试模式 if(defined('ENGINE_NAME')) { /*是否启用云引擎 eg:BAE,SAE*/ defined('ENGINE_PATH') or define('ENGINE_PATH',THINK_PATH.'Extend/Engine/'); require ENGINE_PATH.strtolower(ENGINE_NAME).'.php'; }else{ defined('RUNTIME_PATH') or define('RUNTIME_PATH',APP_PATH.'Runtime/');/*运行时文件目录*/ /*运行时文件名(MODE_NAME 为ThinkPHP的运行模式扩展) eg: 简洁模式 精简模式 命令模式 AMF模式 PHPRPC模式 REST模式 自定义模式扩展 详情亲看 ThinkPHP文档 模式扩展 */ $runtime = defined('MODE_NAME')?'~'.strtolower(MODE_NAME).'_runtime.php':'~runtime.php'; defined('RUNTIME_FILE') or define('RUNTIME_FILE',RUNTIME_PATH.$runtime); /*运行时文件*/ if(!APP_DEBUG && is_file(RUNTIME_FILE)) { // 部署模式直接载入运行缓存 require RUNTIME_FILE; }else{ // 加载运行时文件 require THINK_PATH.'Common/runtime.php'; } }
备注:每一行都有注释 // 开头的是 官方注释,/**/为我自己的注释
一、介绍:
在项目的index.php文件中,引用ThinkPHP.php文件,就正式启用的ThinkPHP框架
二、代码作用
1.定义了系统目录
2.判断系统是否启用 运行模式扩展 ,是否启用云引擎
3.载入 运行时文件runtime.php
runtime文件的加载规则
a.调试模式(APP_DEBUG=true)下,每次都会加载 Common/runtime.php文件
b.其他模式下会判断是否存在 runtime.php的缓存文件, 存在着直接加载缓存文件,
开启了运行模式扩展,缓存文件名为 模式扩展名_runtime.php
未开启着为 ~runtime.php这个是最常见的,运行模式扩展基本不用
三、值得说的编程小细节:
1. defined(***) or define(***) 语句
在平常的编程中,一般采用
if(!defined(***)) { define(***); }