分享一个配置文件读取类,无任何依赖,支持多种格式
功能
读取指定目录下的文件,以数组的形式缓存成文件,需要的时候,可以速度读取。可以设置排除文件,比如routes.php这种路由配置文件,默认一般不返回数组。
支持多种格式,如php,json,ini等,为何不支持YAML, 这丫排版忒恶心。
项目仓库 github.com/xuey490/config/
安装
composer require xuey490/config
快速开始(目录方式)
use Framework\Config\Config;
use Framework\Config\Cache\ConfigCache;
$cacheFile = sys_get_temp_dir() . '/myapp_config.cache.php';
$cache = new ConfigCache($cacheFile, 300); // TTL 300s
$config = new Config(__DIR__ . '/config', $cache, null, ['routes.php', 'services.php']);
// 第一次会读取目录并写缓存(不包括 routes.php, services.php)
$all = $config->load();
// 使用点语法读取
$dbHost = $config->get('database.host', '127.0.0.1');
快捷助手函数 如果你的代码支持容器操作,可以用下面的
if (! function_exists('config')) {
/**
* 配置项读取(支持点语法)
*/
function config(?string $key = null, mixed $default = null): mixed
{
/** @var \Framework\Config\Config $configService */
$configService = Container::getInstance()->get('config');
// 使用配置服务里的配置数组作为最终数据源
$config = $configService->load() ?? [];
// 不传 key 时返回全部配置
if ($key === null) {
return $config;
}
// 支持: config('app.env') / config('cache.stores.redis.host')
$segments = explode('.', $key);
$value = $config;
foreach ($segments as $segment) {
if (!is_array($value) || !array_key_exists($segment, $value)) {
return $default;
}
$value = $value[$segment];
}
return $value;
}
}
关于 LearnKu
推荐文章: