自分で作成した 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; } } ?>
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);