1 Star 0 Fork 1

JUN/sg-config

forked from 百里/sg-config 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
functions.php 5.87 KB
一键复制 编辑 原始数据 按行查看 历史
百里 提交于 2018-05-02 17:25 +08:00 . #config动态设置及获取
<?php
/**
*
* 存储健区分大小写
* 获取和设置配置参数 支持批量定义,支持无限层
*
* 加载文件:config(include($file));支持多次加载
* 加载文件:config(include($file), '键(文件名)');设置以文件名为键
* 设置临时参数:config('a.b.c', 'abc');
*
* 获取所有的参数:config();
* 获取单个值:config('a.b.c');
*
* @param string|array $name 配置变量
* @param mixed $value 配置值
* @param mixed $default 默认值
* @see https://gitee.com/sgfoot/php-config
* @author freelife2020@163.com
* @return mixed
*/
function config($name = null, $value = null, $default = null)
{
static $_config = array();
if (!function_exists('array_get')) {
/**
* 获取key值,递归
* @param $str string 以.隔开
* @param $array array 多维数组
* @return mixed|null
*/
function array_get($str, $array)
{
$list = explode('.', $str);
$first = array_shift($list);
$result = isset($array[$first]) ? $array[$first] : null;
if ($result && is_array($result) && count($list) > 0) {
return array_get(join('.', $list), $result);
}
return $result;
}
}
if (!function_exists('array_set')) {
/**
* 数组设置动态值
* @param $str string 以.隔开的字符串
* @param $val mixed 值
* @param $array array 引用,目标数据
* @return array
*/
function array_set($str, $val, &$array)
{
$list = explode('.', $str);
$first = array_shift($list);
if (count($list) > 0) {
return array_set(join('.', $list), $val, $array[$first]);
}
$array[$first] = $val;
}
}
// 无参数时获取所有
if (is_null($name)) return $_config;
// 优先执行设置获取或赋值
if (is_string($name)) {
$name = explode('.', $name);
//获取值
if (is_null($value)) {
$rs = array_get(join('.', $name), $_config);
return is_null($rs) ? $default : $rs;
}
//设置值
array_set(join('.', $name), $value, $_config);
return null;
}
//批量设置
if (is_array($name)) {
if (is_null($value)) {
$_config = array_merge($_config, $name);
} else {
$_config = array_merge($_config, array($value => $name));
}
return null;
}
return null; // 避免非法参数
}
/**
* 存储健不区分大小写
* 获取和设置配置参数 支持批量定义,支持无限层
*
* 加载文件:configCase(include($file));支持多次加载
* 加载文件:configCase(include($file), '键(文件名)');设置以文件名为键
* 设置临时参数:configCase('a.b.c', 'abc');
*
* 获取所有的参数:configCase();
* 获取单个值:configCase('a.b.c');
*
* @param string|array $name 配置变量
* @param mixed $value 配置值
* @param mixed $default 默认值
* @see https://gitee.com/sgfoot/php-config
* @author freelife2020@163.com
* @return mixed
*/
function configCase($name = null, $value = null, $default = null)
{
static $_config = array();
if (!function_exists('array_case')) {
/**
* 将array的key转换成大写,递归
* @param $array
* @param int $case
*/
function array_case(&$array, $case = CASE_UPPER)
{
$array = array_change_key_case($array, $case);
foreach ($array as $key => $val) {
if (is_array($val)) {
array_case($array[$key], $case);
}
}
}
}
if (!function_exists('array_get')) {
/**
* 获取key值,递归
* @param $str string 以.隔开
* @param $array array 多维数组
* @return mixed|null
*/
function array_get($str, $array)
{
$list = explode('.', $str);
$first = array_shift($list);
$result = isset($array[$first]) ? $array[$first] : null;
if ($result && is_array($result) && count($list) > 0) {
return array_get(join('.', $list), $result);
}
return $result;
}
}
if (!function_exists('array_set')) {
/**
* 数组设置动态值
* @param $str string 以.隔开的字符串
* @param $val mixed 值
* @param $array array 引用,目标数据
* @return array
*/
function array_set($str, $val, &$array)
{
$list = explode('.', $str);
$first = array_shift($list);
if (count($list) > 0) {
return array_set(join('.', $list), $val, $array[$first]);
}
$array[$first] = $val;
}
}
// 无参数时获取所有
if (is_null($name)) return $_config;
// 优先执行设置获取或赋值
if (is_string($name)) {
$name = explode('.', $name);
array_walk($name, function (&$val) {
$val = strtoupper($val);
});
//获取值
if (is_null($value)) {
$rs = array_get(join('.', $name), $_config);
return is_null($rs) ? $default : $rs;
}
//设置值
array_set(join('.', $name), $value, $_config);
return null;
}
//批量设置
if (is_array($name)) {
array_case($name);
if (is_null($value)) {
$_config = array_merge($_config, $name);
} else {
$_config = array_merge($_config, array(strtoupper($value) => $name));
}
return null;
}
return null; // 避免非法参数
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
PHP
1
https://gitee.com/iceson5/php-config.git
git@gitee.com:iceson5/php-config.git
iceson5
php-config
sg-config
master

搜索帮助