Files
FendxPHP/fendx-framework/fendx-core/src/Config/Config.php
Lawson 2782d765fb feat(database): 添加用户角色权限系统及相关监控功能
- 创建用户表(users)包含基本信息和认证字段
- 创建角色表(roles)用于权限控制
- 创建权限表(permissions)定义系统权限
- 创建用户角色关联表(user_roles)建立用户与角色关系
- 创建角色权限关联表(role_permissions)建立角色与权限关系
- 创建迁移记录表(migrations)追踪数据库变更
- 添加AdminController提供管理员面板功能
- 实现系统监控、配置管理、缓存清理等功能
- 添加AOP切面编程支持的各种通知类型
- 实现告警管理AlertManager支持多渠道告警
- 添加文档注解接口规范
2026-04-08 17:00:28 +08:00

86 lines
1.9 KiB
PHP

<?php
declare(strict_types=1);
namespace Fendx\Core\Config;
use Fendx\Common\Exception\BusinessException;
final class Config
{
private static array $data = [];
private static array $cache = [];
public static function load(array $config): void
{
self::$data = $config;
self::$cache = [];
}
public static function get(string $key, mixed $default = null): mixed
{
if ($key === '') {
return $default;
}
// 使用缓存提高性能
if (isset(self::$cache[$key])) {
return self::$cache[$key];
}
$parts = explode('.', $key);
$cur = self::$data;
foreach ($parts as $part) {
if (!is_array($cur) || !array_key_exists($part, $cur)) {
self::$cache[$key] = $default;
return $default;
}
$cur = $cur[$part];
}
self::$cache[$key] = $cur;
return $cur;
}
public static function set(string $key, mixed $value): void
{
$parts = explode('.', $key);
$cur = &self::$data;
foreach ($parts as $part) {
if (!is_array($cur)) {
$cur = [];
}
if (!array_key_exists($part, $cur)) {
$cur[$part] = [];
}
$cur = &$cur[$part];
}
$cur = $value;
// 清除相关缓存
foreach (array_keys(self::$cache) as $cacheKey) {
if (str_starts_with($cacheKey, $key)) {
unset(self::$cache[$cacheKey]);
}
}
}
public static function has(string $key): bool
{
return self::get($key) !== null;
}
public static function all(): array
{
return self::$data;
}
public static function clear(): void
{
self::$data = [];
self::$cache = [];
}
}