自定义的C方法(仿照TP框架C方法),支持无限级调用
核心方法
/**
* 获取配置、设置配置
* C("A.A")
* @param string $conf_key
* @param string $value
* @return array|string
*/
function C( $conf_key ="" , $conf_value = "" ){
static $conf;
// 初始化
if( is_array( $conf_key ) && empty($conf) ){
$conf = $conf_key;
return $conf;
}
// 如果第二个参数为空代表获取配置项 C("MYSQL.host")
if( empty( $conf_value ) && !empty( $conf_key ) ){
# 转大写防止出现错误
$conf_key = strtoupper( $conf_key );
//分割参数中的 .
$conf_key_arr = array_filter(explode( "." , $conf_key ));
//防止静态变量被覆盖
$old = $conf;
//根据.获取的对应的配置项
foreach( $conf_key_arr as $key => $value ){
if( isset( $old[$value] ) ){
$old = $old[$value];
}else{
return ;
}
}
//返回要获取的配置的值
return $old;
}
# 如果两个参数都有,表示是设置配置项
if( !empty( $conf_value ) && !empty( $conf_key ) ){
# 转大写防止出现错误
$conf_key = strtoupper( $conf_key );
//分割参数中的 .
$conf_key_arr = explode( "." , $conf_key );
//递归设置配置
$conf = setKeyValue( $conf , $conf_key_arr , $conf_value );
return $conf_value;
}
return $conf;
}
/**
* 设置配置项【递归】
*/
function setKeyValue( &$data , $key_arr , $data_value ){
// echo "<hr/>";
//如果key_arr长度等于1 直接复制
if( count( $key_arr ) == 1 ){
$data[array_shift($key_arr)] = $data_value;
}else{
//每次弹出一个元素,并且把新的data传递进去
setKeyValue( $data[array_shift($key_arr)] , $key_arr , $data_value);
}
return $data;
}
配置文件配置:
return [ "MYSQL" => [ "HOST" => "localhost", "USER" => "root", "PWD" => "", "DB" => "index", "CHARSET" => "utf-8", "aaaa"=>[ "b"=>122, "c" => [ "aaa"=>121, "bbb"=>2 ] ] ] ];
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇: 数组排序【值排序,值相同键排序】
- 下一篇:没有了
