分享一个配置文件读取类,无任何依赖,支持多种格式

功能

读取指定目录下的文件,以数组的形式缓存成文件,需要的时候,可以速度读取。可以设置排除文件,比如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;

    }

}

欢迎star & fork

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!