多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 基础文件定义 ThinkPHP引导文件位于`thinkphp/base.php`,内容如下: ``` // 基础常量 define('THINK_VERSION', '5.0.24'); define('THINK_START_TIME', microtime(true)); define('THINK_START_MEM', memory_get_usage()); 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') !== false); ``` > 基础文件`base.php`自定义比较重要的基础常量和环境常量。 ## 加载环境变量配置文件 > 本地创建.env文件用来测试,内容如下: ![](https://img.kancloud.cn/78/b3/78b357c391a767a1db00d69fc3c1b055_570x444.png) > .env文件打印结果如下: ![](https://img.kancloud.cn/be/1f/be1f7046682d34d87e214320520c56f6_275x242.png) ``` // 我的根目录是/WWW/tp5/ // 1. 检查 /WWW/tp5/.env 文件是否是常规的文件 if (is_file(ROOT_PATH .'.env')) { // 1. 解析配置文件(.env 文件), 并以数组的形式返回其中的设置, 参数true则可以返回多维数组  $env = parse_ini_file(ROOT_PATH .'.env', true); foreach ($env as $key => $val) { // 2. ENV_PREFIX = PHP_APP_ , 则拼接为 PHP_APP_DEBUG // 3. strtoupper 函数是把字符串转换为大写 $name = ENV_PREFIX .strtoupper($key); // 4. 如果值是数组,继续拼接键值 if (is_array($val)) { foreach ($val as $k => $v) { $item = $name.'_'.strtoupper($k); // 5. putenv 函数是将值添加到服务器环境变量, 环境变量仅存活于当前请求期间, 在请求结束时环境会恢复到初始状态 putenv("$item=$v"); // PHP_DATABASE_HOSTNAME=127.0.0.1  } } else { putenv("$name\=$val"); } } } // 打印环境变量 PHP_DATABASE_HOSTNAME // print_r(getenv("PHP_DATABASE_HOSTNAME")); // 127.0.0.1 ``` ## 注册自动加载 ``` // 载入Loader类 require CORE_PATH . 'Loader.php'; \think\Loader::register(); ``` > 由此可见,让我们继续了解下一章节 `Loader.php` ## 注册错误和异常处理机制 ``` // 载入Error类 \think\Error::register(); ``` > 由此可见,让我们继续了解下一章节 `Error.php` ## 加载惯例配置文件 \think\Config::set(include THINK_PATH . 'convention' . EXT); ![](https://img.kancloud.cn/8c/28/8c28075cf102adb430417aec3d456935_704x582.png) > 由此可见,让我们继续了解下一章节 `Config.php`,看下是如何加载配置文件的