Skip to main content

Module env

Module env 

Source
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()。 Rust set() 同样仅写入内部 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 / dotenvy crate,自行实现 INI 解析
  • 线程安全:通过 Arc<RwLock<HashMap>> 提供并发读、互斥写
  • 不修改进程环境变量:所有 set() 仅写入内部存储

Structs§

Env
环境变量管理器 — 对齐 PHP think\facade\Env

Enums§

EnvError
Env 错误