`
兰迪RANDY
  • 浏览: 97819 次
文章分类
社区版块
存档分类
最新评论

分享一个自己写的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 楼 lifei6671 2011-08-13  
这个好像和discuz的配置文件有异曲同工的效果!

相关推荐

    PHP仿网易云原创音乐分享平台网站源码

    PHP仿网易云音乐网站源码 原创音乐分享平台源码一款基于PHP+MYSQL开发制作的原创音乐在线上传分享网站系统,程序,允许用户在网站注册,并上传自己的音乐作品,系统自带广告系统,可为你网站创造收入来源。...

    H5微信JS-SDK分享接口PHP

    微信JS-SDK分享接口,可通过javascript文件引入方式来实现自定义分享。 具体说明:https://blog.csdn.net/gaofei880219/article/details/80147575

    wordpress合理利用wp-config.php文件小功能

    这里有几个通过往wp-config.php中添加代码实现相关功能的技巧分享给大家。 1,去掉WordPress的历史修订版本功能。 这个是WordPress默认的功能,主要是方便多人协作写文章使用,但是在单人网站上,这个功能基本上是...

    PHP原创音乐分享社交平台网站源码,自适应手机端

    此系统是一个音乐分享平台, 同时也是一个音乐社交平台,允许用户在网站注册,并上传自己的音乐作品,与世界分享。系统自带管理员后台,管理员可在后台管理用户、网站设置等,与此同时。系统支持多语言,很轻松的就...

    FFS5-Mini 文件存储分享系统 v120731 最终版

    FFS是一款基于PHP+多重数据库的先进的网络文件存储分享系统,通过本系统,用户可以将资料在线上传到您的系统中,独创的文件分享码模式,轻松分享每一个文件。更有丰富多彩的文件应用提升文件的价值。 FFS5-Mini作为...

    php数据库配置文件一般做法分享

    config.php文件: 复制代码 代码如下: &lt;?php $db_name=”test”; $db_username=”root”; global $db_password; ?&gt; 数据库操作类(调用配置文件)db.fun.php: 复制代码 代码如下: &lt;?php require(“config/...

    BCS上传分享代码 1.0.zip

    BCS上传分享代码至少需百度应用引擎...2、请在BAE后台手动创建一个bucket  请注意自行修改config.php里的$bucket 免责声明:已限制重复上传时间,防止短时间刷新bcs.php重复上传。此版本为测试版不对代码的BUG负责

    微信公众号开发生成签名demo

    内附php,node以及python的生成代码,可根据自己情况使用。

    PHP云加密平台源码分享.zip

    2019最新PHP云加密平台免费分享,这是一款真正能实现php在线云加密的系统带后台,网上发布的基本上都是二开或者都是假的。 使用本加密,用户需注册登录之后才能使用本加密,登录之后用户可自行上传php文件进行加密...

    PHP博客源码 练手时开发

    后台由本人在学习PHP练手时开发,现在和大家分享! 技术支持:http://www.kongdo.com/ 说明: 1、运行时需要创建数据库 数据库名称可以自己定义,创建好空数据库后 执行db.sql 文件创建表 2、配置config文件: 在...

    一个非常完美的读写ini格式的PHP配置类分享

    * 解析.ini格式的配置文件为一个树形结构的对象 * 配置文件不同section通过冒号继承 * 默认根据hostname确定使用的section,如果不能确定就优先使用production * 检测环境的时候总是优先检测production,其余...

    随机小姐姐短视频引流附带吸粉打赏PHP源码

    3.支付修改 /pay目录epay.config.php文件 支付对接的 易支付 需要易支付类型平台 4.视频源是 ks.txt 文件 ks.txt 里面的视频源少 . 可以将ks.txt2 文件改名 ks.txt 这个视频比较多 同样不能播放的视频也多 会员价格...

    软件博客导航程序PHP版 v1

    软件博客导航程序PHP版最初是为我的网站写的一个软件博客导航,方便博主之间走访,后来写了简单的后台,美化了下前台,php+mysql模式,使用了fancybox插件。  安装及配置说明:  1.新建数据库daohang 修改文件...

    基于PHP的简单图片分享系统源码(课程作业).zip

    这是一个图片存储的网站系统,具有简单的时间线功能,同时有完善的通知中心。 系统需求 PHP版本必须大于等与5.4 Mysql必须支持INNODB引擎,数据库默认编码请指定为utf8mb4,集合为utf8mb4_unicode_ci,创建语句如下...

    SHOPEX模板:2013最新仿易迅商城源码

    注意的是有些会员反映上传出错,这个可以请检查一下你的主机权限,最简单的就是在网站的themes目录下新建一个英文或者数字文件夹,把【易迅网-Shopex4.85.tgz】压缩包里面的文件全部复制到这个文件夹里面,就可以在...

    音乐舞曲分享社区网站源码

    100%完整无错,Discuz X1.5二次开发版,做一个DJ分享社区很不错。 会员可以上传舞曲,可以在线试听,功能强大,不一一介绍,。 安装说明: 1.运行 http://你的域名/bf 还原数据库(帐号密码是admin,不会还原的请百度...

    一个免费IP探针系统源码分享,PHP版本

    一个免费IP探针系统,PHP版本。 默许定位接口是淘宝的,大家能够自行改换。 希望能够协助到有需求的朋友。 默许后台账号:admin 默许后台密码:123456 装置方式:修正config.php里面的数据库配置,导入ip.sql文件即可。

    PHP动态编译出现Cannot find autoconf的解决方法

    本文详细讲述了PHP动态编译出现Cannot ..../configure –with-php-config=/usr/local/webserver/php/bin/php-config 但是执行/usr/local/webserver/php/bin/phpize时出现错误: 复制代码 代码如下:Configuring for: PH

    【PHP】朋友圈疯传营销吸粉源码|微信测试游戏程序趣味互动传播分享微测

    关注二维码图片地址,将这个图片地址改为自己新的二维码图片地址。 4.游戏页面底部是否要打开广告位,打开config.php文件在913行左右: 是否开启底部广告,1为开启,0为关闭,默认是关闭着此广告位。 $openad = 0; ...

    javascript获取wx.config内部字段解决微信分享

    在微信分享开发的时候我们通常的流程是 &lt;?php require_once jssdk.php; $jssdk = new JSSDK(yourAppID, yourAppSecret); $signPackage = $jssdk-&gt;GetSignPackage(); ?&gt; &lt;!DOCTYPE html&gt; &lt;...

Global site tag (gtag.js) - Google Analytics