base php,base.php

慎俊艾
2023-12-01

## 基础文件定义

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`,看下是如何加载配置文件的

 类似资料:

相关阅读

相关文章

相关问答