在发现配置项很多了以后,使用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单个配置字符串得到获取的数据了。当然如果你有更好的写法,欢迎分享出来!!
最佳答案
