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

功能

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

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

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