PHP 获取配置config 函数

该博客介绍了如何使用PHP的config函数来读取环境配置的JSON文件,并详细阐述了配置内容的获取过程。文中提到,该函数遵循全局配置优先,然后由子级配置进行覆盖和继承的原则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

功能需求
通过这个函数,获取环境配置JSON文件的配置内容。
并且,如果是有全局的,优先用全局,再子级,覆盖继承。

/**
 * @param string $path
 * @param null $default
 * @return mixed|null
 */
function config($path = 'app', $default = null)
{
    static $data = [];

    $path = explode('.', $path);
    $name = array_shift($path);


    if (!empty($name) && !isset($data[$name])) {
        $global = DIR_ROOT . '/config/' . $name . '.json';

        $data[$name] = [];
        if (file_exists($global)) {
            $data[$name] = json_decode(file_get_contents($global), true);
        }

        $file = DIR_ROOT . '/config/' . RUN_ENV . '/' . $name . '.json';
        if (file_exists($file)) {
            $data[$name] = array_merge_recursive(json_decode(file_get_contents($file), true), $data[$name]);
        }
    }

    if (empty($path)) {
        $ret = $data[$name];
    } elseif (isset($data[$name])) {
        $ret = $data[$name];
        $i = 0;
		while (($p = current($path)) !== false) {
            $i++;

            if (isset($ret[$p])) {
                $ret = $ret[$p];
            } else {
                $ret = $default;
                break;
            }

            next($path);
            if ($i > 10) break;
        }
    } else {
        $ret = $default;
    }

    if (func_get_arg(0) == 'app.log.file') {
        $ret = preg_replace_callback('#%([ymdhis]{1})#i', function ($m) {
            return date($m[1]);
        }, $ret);
        $ret = DIR_ROOT . '/' . ltrim($ret, '/');
    }

    return $ret;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值