PHP框架设计之 ThinkPHP5 源码解析

ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,也是国内使用最为广泛的国产框架。诞生于2006年,历经FCS0.6.0到 ThinkPHP 0.9.5,历经1.0到3.0的发展。2015年发布ThinkPHP5.0版本。采用全新的架构思想,引入了更多的PHP新特性,优化了核心,减少了依赖,实现了真正的惰性加载,支持composer,并针对API开发做了大量的优化,包括路由、日志、异常、模型、数据库、模板引擎和验证等模块都已经重构。兼容PHP最新版本。这使得他成为框架的首选。下面也就其框架对一定的解析。

运行机制及流程

在这里插入图片描述

1.入口文件index.php

独立模式

define('APP_PATH', __DIR__ . '/../application/');
define('APP_DEBUG', true);require __DIR__ . '/../thinkphp/start.php';

composer模式

define('APP_PATH', __DIR__ . '/../application/');
 
define('APP_DEBUG', true);if (is_file(__DIR__ . '/../vendor/autoload.php')) {
       require_once __DIR__ . '/../vendor/autoload.php';
} else {
       require __DIR__ . '/../thinkphp/start.php';
}

2.框架引导文件start.php

namespace think;
 
// ThinkPHP 引导文件
// 加载基础文件
require __DIR__ . '/base.php';
// 执行应用
App::run()->send();

3.全局变量文件base.php

define('THINK_VERSION', '5.0.2');
//TP版本号define('THINK_START_TIME', microtime(true));
//启动时间define('THINK_START_MEM', memory_get_usage());
//获取分配给 PHP 的内存量define('EXT', '.php');
//文件后缀define('DS', DIRECTORY_SEPARATOR);
//系统分隔符defined('THINK_PATH') or define('THINK_PATH', __DIR__ . DS);
//项目根目录define('LIB_PATH', THINK_PATH . 'library' . DS);
//类库目录define('CORE_PATH', LIB_PATH . 'think' . DS);
//核心文件目录define('TRAIT_PATH', LIB_PATH . 'traits' . DS);
//复用机制文件目录defined('APP_PATH') or define('APP_PATH', dirname($_SERVER['SCRIPT_FILENAME']) . DS);
//应用根目录defined('ROOT_PATH') or define('ROOT_PATH', dirname(realpath(APP_PATH)) . DS);
//根目录defined('EXTEND_PATH') or define('EXTEND_PATH', ROOT_PATH . 'extend' . DS);
//扩展目录defined('VENDOR_PATH') or define('VENDOR_PATH', ROOT_PATH . 'vendor' . DS);
//第三方库和插件放置defined('RUNTIME_PATH') or define('RUNTIME_PATH', ROOT_PATH . 'runtime' . DS);
//运行缓存目录defined('LOG_PATH') or define('LOG_PATH', RUNTIME_PATH . 'log' . DS);
//日志文件目录defined('CACHE_PATH') or define('CACHE_PATH', RUNTIME_PATH . 'cache' . DS);
//缓存文件目录defined('TEMP_PATH') or define('TEMP_PATH', RUNTIME_PATH . 'temp' . DS);
//临时目录defined('CONF_PATH') or define('CONF_PATH', APP_PATH);
// 配置文件目录defined('CONF_EXT') or define('CONF_EXT', EXT);
// 配置文件后缀defined('ENV_PREFIX') or define('ENV_PREFIX', 'PHP_');
// 环境变量的配置前缀
// 环境常量
define('IS_CLI', PHP_SAPI == 'cli' ? true : false);
define('IS_WIN', strpos(PHP_OS, 'WIN') 
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值