Download the PHP package wiseadmin/wise-config without Composer
On this page you can find all versions of the php package wiseadmin/wise-config. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download wiseadmin/wise-config
More information about wiseadmin/wise-config
Files in wiseadmin/wise-config
Package wise-config
Short Description WiseAdmin 键值配置与字典管理包 — 支持多类型值、分组缓存、历史版本追溯与 HTML 净化过滤
License Apache-2.0
Homepage https://github.com/hiwiseadmin/wise-config
Informations about the package wise-config
wiseadmin/wise-config
ThinkPHP 6/8 键值对配置管理扩展包,提供配置存储、缓存管理、历史版本追踪、字典管理、多命名空间隔离、继承链解析、标签分类和后台管理界面
✨ 特性
核心配置管理
- 多类型支持:文本(text)、数字(number)、富文本(html)、图片(image)、JSON(json)
- 多命名空间隔离:支持按 namespace 隔离配置,自动从请求上下文推断或显式指定
- 冒号路径解析:支持
namespace:group:key、group:key、key三种路径格式 - 配置分组:支持任意分组(如 system、mail、upload)
- 缓存自动刷新:配置变更时自动清除相关缓存,支持空值防缓存穿透
- 历史版本:完整记录每次配置变更,支持对比(diff)和回滚(revert)
- 批量操作:支持
setMany()批量设置、all()获取全部配置
字典管理(DictSDK)
- 字典类型管理:定义字典编码、名称、描述,支持树形字典标记
- 字典项 CRUD:完整的增删改查、分页列表、批量操作
- 树形字典:支持父子层级结构,兼容 Tree 工具库
- 便捷查询:value→label 映射、按值取标签
- 专用缓存:字典数据独立缓存,变更自动清理
- 自动安装:支持服务启动时自动创建数据表
高级特性
- 继承链(Inheritance):按 namespace 层级(如
project_a.plugin_mail.prod)向上查找配置,支持inherit=false阻断 - 标签管理(Tag):为配置附加标签,支持按标签 AND/OR 逻辑查询
- TP Config 桥接:将动态配置注入到
think\Config体系,使config('wise.system.xxx')可直接访问 - 类型扩展:通过实现
TypeHandlerInterface接口注册自定义类型处理器 - 事件驱动:保存前后、回滚、字典变更、标签变更时触发事件,便于其他模块监听
- 权限预留:支持通过闭包配置管理权限
- HTML XSS 过滤:内置基础过滤,建议搭配
ezyang/htmlpurifier获得更强防护 - 符合 ThinkPHP 约定:自动服务发现、门面模式、命令行工具
📦 安装
推荐包
初始化
执行数据库迁移
将创建
config、config_history、config_tag、dict_type、dict_item五张数据表。
🚀 快速开始
ConfigManager(核心配置管理)
基础读写
使用 WiseConfig 门面:
命名空间与路径
支持冒号分隔的三段路径 namespace:group:key,以及链式调用指定 namespace:
继承链
支持多层级 namespace 的点分命名(如 project_a.plugin_mail.prod),子级可继承父级的配置:
设置配置时,通过
'inherit' => 0可阻断继承,上级同名配置不会生效。默认情况下
get()只读取当前 namespace,只有getResolved()才走继承链。 如需让get()也统一走继承解析,可开启配置wise-config.inheritance.apply_on_get = true(默认关闭,保持既有行为)。
标签管理
TP Config 桥接
将动态配置注入到 ThinkPHP 原生 config() 函数体系:
历史版本
缓存管理
字典管理(Facade,推荐)
WiseDictType / WiseDictItem 是 DictTypeService / DictItemService 的静态门面,
与 WiseConfig 风格一致,底层从容器解析服务实例:
完整方法列表见
facade/WiseDictType.php/facade/WiseDictItem.php的@method注解。
DictSDK(兼容入口,容器未就绪时可用)
DictSDK 是早期的静态入口,聚合了类型 / 字典项 / 缓存三个服务,并内置
「容器不可用则自行 new」的兜底逻辑,因此可在安装器、迁移、CLI、单元测试等
DI 尚未注册的场景直接调用:
业务代码(容器已就绪)建议优先使用上面的 Facade;
DictSDK保留用于无容器场景与向后兼容。
字典项 CRUD(服务层)
支持的数据类型
| 类型标识 | 说明 | 存储格式 | 读取行为 |
|---|---|---|---|
text |
单行文本 | 字符串 | 原样返回 |
number |
数字 | 字符串 | 自动转为 int/float |
html |
富文本 | HTML 字符串 | 返回 HTML(安全过滤后) |
image |
单图 | 相对路径 | 自动拼接完整 URL |
json |
JSON 对象/数组 | JSON 字符串 | 自动解析为数组 |
类型扩展
实现 wise\config\contract\TypeHandlerInterface 接口即可扩展自定义类型:
事件
配置事件
| 事件类 | 触发时机 | 关键参数 |
|---|---|---|
ConfigSaving |
配置保存前 | key, value, type, group, namespace |
ConfigSaved |
配置保存后 | key, oldValue, newValue, type, group, namespace |
ConfigDeleting |
配置删除前 | key, configId, group, namespace |
ConfigReverted |
配置回滚后 | key, fromValue, toValue, historyId, namespace |
字典事件
| 事件类 | 触发时机 | 关键参数 |
|---|---|---|
DictChangedEvent |
字典项增删改时 | dictCode, action(create/update/delete), data |
其他事件
| 事件类 | 触发时机 | 说明 |
|---|---|---|
TagChanged |
标签关联变更时 | 配置标签增删改 |
InheritanceBlocked |
继承被阻断时 | inherit=false 阻断上级继承 |
监听示例
⚙️ 配置
配置文件 config/wise-config.php:
权限配置示例
📂 目录结构
依赖关系
- 必需:
topthink/framework、topthink/think-migration、wiseadmin/wise-support、ext-json - 可选(suggest):
ezyang/htmlpurifier(更健壮的 HTML XSS 过滤) - 迁移:包内置
migrate-path,安装后需执行迁移
说明:本包仅提供服务层与数据模型,不含后台控制器/路由/视图。 后台管理界面(配置管理、字典管理)位于宿主应用的
app/admin/controller/WiseConfig*.php与app/admin/controller/WiseDict.php;配置中的route_prefix仅供宿主路由使用。
许可证
Apache-2.0
All versions of wise-config with dependencies
topthink/framework Version ^8.0
topthink/think-migration Version ^3.0
wiseadmin/wise-support Version 1.0.*