Thinkphp C 函数优化,支持多层配置

分类: 源代码 > PHP
/* Thinkphp C 函数 */
function C($name=null, $value=null,$default=null) {
    static $_config = array();
    
    // 无参数时获取所有
    if (empty($name)) {
        return $_config;
    }
    // 优先执行设置获取或赋值
    if (is_string($name)) {
        $name = explode('.', $name);
        $config = $_config;
        if (is_null($value)){
            foreach ($name as $n){
                if (isset($config[$n])){
                    $config = $config[$n];
                }else{
                    return $default;
                }
            }
            return $config;
        }else{
            $tmp = array();
            foreach ($name as $key => $n) {
                if ($key == 0) {
                    if (isset($_config[$n])) {
                        $tmp = &$_config[$n];
                    } else {
                        return false;
                    }
                } else {
                    if (isset($tmp[$n])) {
                        $tmp = &$tmp[$n];
                    } else {
                        return false;
                    }
                }
            }
            $tmp = $value;
            unset($tmp);
        }
    }
    // 批量设置
    if (is_array($name)){
        $_config = array_merge($_config, array_change_key_case($name));
        return;
    }
    return null; // 避免非法参数
}
$_config = array(
    'name1' => array(
        'name2' => array( 'name3' => 'value3', 'name3-1' => 'value3-1' ),
        'name2-1' => array( 'name4' => 'value4', ),
    )
);
C($_config);
var_dump(C('name2', 'jiangguibin'));
var_dump(C('name2'));
var_dump($_config);
来源:原创 发布时间:2020-08-24 21:37:51