Expand description
App 容器 — DB/Cache/Log 单例 + DI 服务容器
对齐 PHP app() 容器,持有全局配置、单例和服务绑定。
§设计
- 基于
OnceCell实现全局单例(线程安全,初始化一次后只读) - 持有
AppConfig+ 5 个 DB 连接配置 + Cache/Log 占位 - 后续阶段:接入 SZ-ORM
Pool,替换DatabaseConnection为真正的连接池 - 接入 Cache facade
- 接入日志系统
- DI阶段:接入服务容器(
bind/singleton/make,对齐 PHPapp()->bind/make/singleton)
§PHP 对齐
// PHP 中的 app() 容器
$app = app();
$db = $app->db; // 数据库连接
$cache = $app->cache; // 缓存
$log = $app->log; // 日志
// 服务绑定与解析(DI)
app()->bind('cache', fn() => new MemoryCache());
app()->singleton('db', fn() => Db::connect());
$cache = app()->make('cache');§Rust DI 设计
Rust 中用 TypeId 替代 PHP 字符串 key,实现类型安全的服务解析:
ⓘ
use sz_rust_core::container::App;
// 注册单例(整个应用生命周期内只创建一次)
App::with(|app| {
app.singleton(|| MyService::new());
});
// 解析服务(类型安全,无需 downcast 字符串 key)
let svc = App::global().unwrap().make::<MyService>();Structs§
Enums§
- Lifetime
- 服务生命周期
Type Aliases§
- ScopeId
- 请求作用域 ID