[原创]替代config助手函数的新函数

浏览:350 发布日期:2021/04/21 分类:技术分享
最近在更新升级自己的swiftadmin开发框架,
在发现配置项很多了以后,使用config来获取配置项数据,
每次都要写很长的数组连接符,感觉特别的不方便,
之前直接定义了常量,但是上百个配置参数,定义常量太麻烦了,
于是用递归查找的方式重写了config函数的获取!    /**
     * 递归查询函数
     * 替代config助手函数用来获取参数
     * 支持 a b c a.b a.b.c b.c 格式!
     */
    public function saenv($name = null)
    {

        if (!empty($name)) {
            $config = config('system');
            if (!is_array($name)) {
                $name = explode('.',$name);
            }
            foreach ($name as  $val) {
                if (isset($config[$val])) {
                    $config = $config[$val];
                } else {
                    // 父类数据
                    $parent = $config;
                    $find = function(&$base,&$key) use (&$find,&$config) {
                        foreach ($base as $value) {
                            if (is_array($value)) {
                                // 找到KEY
                                if (array_key_exists($key,$value)) {
                                    $config = $value[$key];
                                }
                                 // 存在子数组则进行递归
                                else if(count($value) != count($value,1)) {
                                    $find($value,$key);
                                }
                            }
                        }
                    };
                    
                    $find($config, $val);
                    // 数据相等则为空
                    if ($config == $parent) {
                        $config = [];
                    }
                }
            }
            return $config;
        }

        return false;
    }
现在觉得好用多了,可以直接saenv单个配置字符串得到获取的数据了。
当然如果你有更好的写法,欢迎分享出来!!
最佳答案
评论( 相关
后面还有条评论,点击查看>>