ホームページ  >  記事  >  バックエンド開発  >  自分が書いた PHP CONFIG クラスを共有する

自分が書いた PHP CONFIG クラスを共有する

WBOY
WBOYオリジナル
2016-06-13 13:06:52877ブラウズ

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

1階 ライフi6671 2011-08-13
これは discuz の設定ファイルと同じ効果があるようです!
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。