丹调生活 发表于 2017-3-27 12:01:01

分享一个自己写的PHP CONFIG类

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

/**
* config.php
*
* discription
*
* @filename config.php
* @versionv1.0
* @update   2011-8-9
* @author   randy.hong
* @contact homingway@163.com
* @packageconfig
*/
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])){
$cfg_file = PATH_CONFIG.DS.'config.'.$param.'.php';
if(file_exists($cfg_file)){
self::$_configarray[$param] = include_once($cfg_file);
}
}
$tmp_config = null;
for($i=1;$i<count($param);$i++){
if($i==1){
if(isset(self::$_configarray[$param][$param])){
$tmp_config = self::$_configarray[$param][$param];
} 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] = $value;break;
case 2:self::$_configarray[$param][$param] = $value;break;
case 3:self::$_configarray[$param][$param][$param] = $value;break;
case 4:self::$_configarray[$param][$param][$param][$param] = $value;break;
case 5:self::$_configarray[$param][$param][$param][$param][$param] = $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);
页: [1]
查看完整版本: 分享一个自己写的PHP CONFIG类