核心方法
/**
* 获取配置、设置配置
* 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
]
]
]
];