分享一个自己写的PHP CONFIG类

这个类最大的特点就是可以加载无线深度的配置项,而在配置的使用过程中也可以对某些配置项进行修改,深度不超过5级。


/**
* config.php
*
* discription
*
* @filename config.php
* @version v1.0
* @update 2011-8-9
* @author randy.hong
* @contact homingway@163.com
* @package config
*/

define('DS', DIRECTORY_SEPARATOR);
define('PATH_CONFIG', '.'.DS.'configs');

//config param key separator
define('CONFIG_SEPARATOR', '.');

class CONFIG{

protected static $_configarray = array();

/**
* 获取一个配置
* @param string $key
* @return mixed
*/
public static function get($key=''){

//inlegal param,return false
if(!$key){
return false;
}

//without separator in param, return the whole config file
if(strpos($key,CONFIG_SEPARATOR)===false){
if(!isset(self::$_configarray[$key])){
$cfg_file = PATH_CONFIG.DS.'config.'.$key.'.php';
if(file_exists($cfg_file)){
self::$_configarray[$key] = include_once($cfg_file);
}
}
return self::$_configarray[$key];
} else {
$param = explode(CONFIG_SEPARATOR,$key);
if(!isset(self::$_configarray[$param[0]])){
$cfg_file = PATH_CONFIG.DS.'config.'.$param[0].'.php';
if(file_exists($cfg_file)){
self::$_configarray[$param[0]] = include_once($cfg_file);
}
}
$tmp_config = null;
for($i=1;$i<count($param);$i++){
if($i==1){
if(isset(self::$_configarray[$param[0]][$param[1]])){
$tmp_config = self::$_configarray[$param[0]][$param[1]];
} else {
return false;
}
} else {
if(isset($tmp_config[$param[$i]])){
$tmp_config = $tmp_config[$param[$i]];
} else {
return false;
}
}
}
return $tmp_config;
}
}

/**
* 更改某个配置项的值
* @param string $key
* @param mixed $value
* @return true
*/
public static function set($key,$value){
$param = explode(CONFIG_SEPARATOR,$key);
$count_param = count($param);
switch($count_param){
case 1:self::$_configarray[$param[0]] = $value;break;
case 2:self::$_configarray[$param[0]][$param[1]] = $value;break;
case 3:self::$_configarray[$param[0]][$param[1]][$param[2]] = $value;break;
case 4:self::$_configarray[$param[0]][$param[1]][$param[2]][$param[3]] = $value;break;
case 5:self::$_configarray[$param[0]][$param[1]][$param[2]][$param[3]][$param[4]] = $value;break;
default:break;
}
return true;
}

}

?>


配置文件:configs/config.test.php

return array(
'test1' => array(
'test2' => array(
'test3' => array(
'test4' => array(
'test5' => 5555,
),
),
),
)
);


调用文件

include_once('config.php');
$config = CONFIG::get('test.test1');
print_r($config);
CONFIG::set('test.test1',222);
$config = CONFIG::get('test.test1');
print_r($config);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值