// 定义应用目录
define('APP_PATH', __DIR__ . '/../application/');
// 加载框架引导文件
require __DIR__ . '/../thinkphp/start.php';
- thinkphp/start.php 框架自动文件
<?php
namespace think;
// ThinkPHP 引导文件
// 加载基础文件 - 框架启动应用加载
require __DIR__ . '/base.php';
// 执行应用
// APP::run() 框架初始化和请求处理
App::run()->send();
<?php
// 框架常量定义 - 一下定义都是绝对路径被定义成常量
// thinkPHP 版本常量定义
define('THINK_VERSION', '5.0.12');
// 请求加载开始时间戳
define('THINK_START_TIME', microtime(true));
// 请求开始php当前所占系统内存
define('THINK_START_MEM', memory_get_usage());
// 文件后缀
define('EXT', '.php');
// windows | linux 分割符定义 兼容不同系统
define('DS', DIRECTORY_SEPARATOR);
// ThinkPHP加载目录路径定义 __DIR__ 返回当前文件守在目录绝对路劲 **/thinkphp/
defined('THINK_PATH') or define('THINK_PATH', __DIR__ . DS);
// 定义库文件路劲 **/thinkphp/library/
define('LIB_PATH', THINK_PATH . 'library' . DS);
// 路劲定义 **//thinkphp/library/think/ - 当前目录包含thinkphp的一些扩展,缓存驱动、数据驱动、日志驱动等
define('CORE_PATH', LIB_PATH . 'think' . DS);
// 路劲定义 **//thinkphp/library/traits/ - 当前目录包含thinkphp的一些引入文件等
define('TRAIT_PATH', LIB_PATH . 'traits' . DS);
// 定于应用启动文件都在位置 ./application - public/index.php 入口文件已定义
defined('APP_PATH') or define('APP_PATH', dirname($_SERVER['SCRIPT_FILENAME']) . DS);
// 定义框架根文件路径 - APP_PATH 升一级目录文件位置
defined('ROOT_PATH') or define('ROOT_PATH', dirname(realpath(APP_PATH)) . DS);
// ./extend/ 目录位置
defined('EXTEND_PATH') or define('EXTEND_PATH', ROOT_PATH . 'extend' . DS);
// ./vendor/ 目录位置 框架扩展目录
defined('VENDOR_PATH') or define('VENDOR_PATH', ROOT_PATH . 'vendor' . DS);
// ./runtime/ 框架运行时缓存目录位置
defined('RUNTIME_PATH') or define('RUNTIME_PATH', ROOT_PATH . 'runtime' . DS);
// ./runtime/log/ 日志目录路劲位置
defined('LOG_PATH') or define('LOG_PATH', RUNTIME_PATH . 'log' . DS);
// ./runtime/cache/ 运行时缓存目录
defined('CACHE_PATH') or define('CACHE_PATH', RUNTIME_PATH . 'cache' . DS);
// ./runtime/temp/ 模板缓存目录
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);
// 是否是windows环境下
define('IS_WIN', strpos(PHP_OS, 'WIN') !== false);
// 载入Loader类 - -./thinkphp/library/think/Loader.php 该文件包含自动注入相关方法
require CORE_PATH . 'Loader.php';
// 加载环境变量配置文件
// 加载配置文件 .env 中值
if (is_file(ROOT_PATH . '.env')) {
$env = parse_ini_file(ROOT_PATH . '.env', true);
foreach ($env as $key => $val) {
$name = ENV_PREFIX . strtoupper($key);
if (is_array($val)) {
foreach ($val as $k => $v) {
$item = $name . '_' . strtoupper($k);
putenv("$item=$v");
}
} else {
putenv("$name=$val");
}
}
}
// 注册自动加载
// 这里是整个thinkphp的自动加载重要代码 参看源码
\think\Loader::register();
// 注册错误和异常处理机制
\think\Error::register();
// 加载惯例配置文件
\think\Config::set(include THINK_PATH . 'convention' . EXT);
网友评论