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

分享一个自己写的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的配置文件有异曲同工的效果!

相关推荐

    初学者用thinkphp写的一个有文章分享网站

    【标题】: "初学者用thinkphp写的一个有文章分享网站" 这个项目是针对初学者设计的,旨在帮助他们学习和实践使用ThinkPHP框架构建一个文章分享网站。ThinkPHP是一款非常流行的开源PHP框架,它提供了丰富的功能和...

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

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

    php微信分享带图标demo.zip

    【标题】"php微信分享带图标demo.zip"是一个关于如何在PHP环境中实现微信分享功能的示例项目,其中包含了自定义分享图标的功能。这个压缩包旨在帮助开发者理解并实现微信平台上的网页分享,使得用户在浏览网页时可以...

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

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

    H5微信JS-SDK分享接口PHP

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

    php微信分享jssdk

    在PHP开发中,微信分享JSSDK(JavaScript SDK)是一个重要的功能模块,它允许开发者将微信的社交特性集成到自己的网站应用中,如分享、点赞、评论等。在这个基于ThinkPHP 3.2.3的项目中,我们看到开发者已经对微信的...

    php广告加载类用法实例

    分享给大家供大家参考。具体方法如下: 该php广告加载类,支持异步与同步加载。需要使用Jquery实现。 ADLoader.class.php类文件如下: &lt;?php /** 广告加载管理类 * Date: 2013-08-04 * Author: fdipzone * Ver: ...

    php+mysql 仿百姓网 简洁型分类信息程序源码 完美可用

    此外,描述中还暗示有其他源码资源可供需求者获取和交流,表明这可能是一个开发者社区或资源分享平台的一部分。 【标签】"仿百姓网 分类信息 phpmps"进一步细化了这个项目的关键特性。"仿百姓网"再次强调了其设计...

    php数据库备份还原类分享

    本文档将详细介绍一个PHP实现的数据库备份还原类,并对其内部工作原理进行剖析,帮助读者更好地理解该类的功能及使用方法。 #### 二、类结构与功能介绍 ##### 2.1 类的基本结构 ```php class DatabaseTool { // ...

    分享一个php+sql注册登录模板

    通过分析这个模板,你可以学习到如何用PHP和SQL构建一个基本的用户管理系统,了解Web应用程序的基本架构,并接触到数据库设计、前端样式、以及网络安全等方面的知识。这对于初学者来说是一次很好的实战经验,也提供...

    最新版本微信jdk1.6分享到微信朋友圈 php代码示例

    3. **构建分享内容**:创建一个`WXWebpageObject`对象,设置自定义的标题、描述和链接。如果需要分享图片,还需要创建`WXMediaImageObject`,并将图片URL或media_id赋值给它。 4. **封装分享请求**:将上述对象封装...

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

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

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

    本文主要介绍了一个能够高效读写ini格式配置文件的PHP类。通过这个类,用户可以方便地管理配置项,实现配置项的继承与分割,根据不同的运行环境加载相应的配置,并且能够处理配置文件中出现的数组结构。使用这个类,...

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

    为了将PHP代码从前端HTML中分离出来,通常会将获取签名包的PHP代码写成一个接口,然后通过AJAX在前端调用该接口来获取必要的参数。这些参数包括appId(应用ID)、timestamp(时间戳)、nonceStr(随机字符串)和...

    基于PHP的简洁论坛分类信息文章发布三用系统源码.zip

    这个系统旨在提供一个平台,用户可以在这里进行讨论,发布各类信息,以及撰写和分享文章。PHP是一种广泛使用的开源服务器端脚本语言,特别适合于Web开发,可以嵌入到HTML中,以增加网站的动态功能。 【描述】"基于...

    基于PHP的健康资讯类网站源码 php版.zip

    【标题】"基于PHP的健康资讯类网站源码 php版.zip"揭示了这是一个使用PHP编程语言开发的健康信息网站的源代码。PHP是一种广泛应用于Web开发的开源脚本语言,以其灵活性、易学性和跨平台性而受到青睐。这个源码可能...

    基于PHP的微小豆朋友圈分享赚钱系统php版源码.zip

    这个系统的核心是利用PHP编程语言来构建一个用户可以通过分享特定内容到自己的朋友圈来赚取收益的平台。 【描述】这个描述简单明了,表明该源码是实现“微小豆”朋友圈分享赚钱功能的PHP实现。这意味着它可能包括...

    基于PHP的爱迪达搞笑视频分享站php版 2.01.zip

    【标题】"基于PHP的爱迪达搞笑视频分享站php版 2.01"是一个使用PHP编程语言开发的在线视频分享平台。该版本为2.01,意味着它是经过了多次迭代和优化的成熟产品,旨在提供一个集搞笑、娱乐于一体的社区,让用户可以...

    PHP个人主页网站源码

    4.前往源码根目录设置数据库账号密码config.php文件,还有个在admin/php/config.php 5.在yj.php里配置发件邮箱,方便使用留言功能 6.懒得弄数据库储存账号密码,所以暂时在admin/login.php里面设置账号密码,后续...

    基于PHP的ThinkMusic php音乐分享程序.zip

    【标题】"基于PHP的ThinkMusic php音乐分享程序"是一个专为音乐爱好者设计的Web应用程序,它利用PHP语言开发,旨在提供一个平台让用户可以分享、发现和欣赏音乐。该程序可能包含了用户登录注册、音乐上传、播放、...

Global site tag (gtag.js) - Google Analytics