Expand description
Env 模块 — 对齐 PHP think\facade\Env
本模块实现环境变量管理,对齐 PHP think\facade\Env 的核心 API。
§PHP 对齐
§核心 API 映射
| PHP 方法 | Rust 方法 | 说明 |
|---|---|---|
Env::get($name, $default = null) | Env::get / Env::get_with_default | 获取环境变量 |
Env::set($name, $value) | Env::set | 设置环境变量(仅写入内部存储) |
Env::has($name) | Env::has | 检查环境变量是否存在 |
Env::load($file) | Env::load_from_file | 从 .env 文件加载 |
§PHP 行为对齐
- 优先级:PHP
Env::get()优先返回真实环境变量($_SERVER/getenv()), 其次返回.env文件加载的值。Rust 同样优先std::env::var(),其次查内部存储。 - 点分隔访问:PHP
.env文件支持[section]段,通过section.key访问。 Rust 通过Env::load_from_file解析 INI 风格 section,存储为section.key形式。 - 不污染进程环境:PHP
Env::set()仅修改内部数组,不调用putenv()。 Rustset()同样仅写入内部HashMap,避免std::env::set_var的线程安全问题。
§.env 文件格式
支持 INI 风格的 section 嵌套:
APP_DEBUG = true
APP_KEY = base64:xxxxxx
[database]
hostname = localhost
port = 3306访问方式:
APP_DEBUG→ 顶层键database.hostname→ section 内键
§架构说明
- 无外部依赖:不依赖
dotenv/dotenvycrate,自行实现 INI 解析 - 线程安全:通过
Arc<RwLock<HashMap>>提供并发读、互斥写 - 不修改进程环境变量:所有
set()仅写入内部存储
Structs§
- Env
- 环境变量管理器 — 对齐 PHP
think\facade\Env
Enums§
- EnvError
- Env 错误