# 配置

炸毛框架的所有配置文件都存储在 `config` 目录中。每个选项都带有文档，所以你可以查阅这些文件并熟悉可用的配置项。

一般来说，我们建议你优先查看 `config/global.php` 文件及其文档，它包含了运行框架所需要的绝大部分配置，例如通信方式和时区等。

## 配置文件格式

除了 `php` 文件外，我们还支持以下格式：

- YAML
- JSON
- TOML

## 环境配置

根据运行的环境采用不同的配置值是很有必要的，例如你可能希望在本地和生产环境中使用不同的数据库配置。

为了方便这一功能，我们提供了基于环境的配置加载措施。你可以在启动框架时使用 `--env` 选项指定当前环境，例如 `./zhamao server --env=production` 。

如果未明确指定当前环境，则默认环境为 `development`。

如果要使某一配置文件只在特定环境下记载，你可以为给文件添加后缀，例如 `example.production.php` 只会在当前环境为 `production` 时加载。

你可以同时设置基础配置文件和环境特定配置文件，例如 `global.php` 和 `global.production.php` ，后者将会覆盖前者中的配置项。

### 配置安全

我们**非常不建议**你将数据库信息、访问密钥的敏感字段提交给版本控制，因为这可能会导致相关信息的泄露，同时也不利于其他开发人员修改自己的本地配置。

相反，我们建议你借助 DotEnv 等库，将相关配置信息写入 `.env` 文件中，并按需读取。

## 访问配置项

你可以在任何地方使用全局 `config` 函数获取配置项值。支持使用点语法获取，配置项名称由文件名开头，并允许指定默认值。

```php
# 获取时区，未设置则返回 Asia/Shanghai
$value = config('global.runtime.timezone', 'Asia/Shanghai');
```

你也可以使用 `config` 函数设置配置项，传递数组即可：

```php
# 将时区修改为 UTC
config(['global.runtime.timezone' => 'UTC']);
```
