自定义的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。
- 上一篇: 数组排序【值排序,值相同键排序】
- 下一篇:没有了