您的位置:我是网管博客 » 特蓝克斯 -- Amanda 的生活 » 日志
设置配置文件
上一篇 / 下一篇 2007-06-09 15:46:57 / 个人分类:PHP
我们在程序开发中经常会用到全局变量,而你怎么去配置全局变量?通常我们会定义一个文件,在里面放置配置文件信息。举个例子:
config.inc.php
<?php
/*
@title:配置文件
@author:特蓝克斯
@date:2007-06-09
@功能:设置全局变量,这里设置配置信息为常量
*/
$timezone_identifier = "Asia/Shanghai";//时区
date_default_timezone_set($timezone_identifier);
// [CH] MySql服务器设置
define("_Mysql_host",'localhost'); //服务器
define("_Mysql_user",'root'); //帐号
define("_Mysql_PW",''); //密码
define("_dbName",'guestbook'); //数据库名
// [CH] 站点基本配置
define("_sizeName",'特蓝克斯'); //留言本名称
define("_pageShow",10); //每页显示留言数
define("_webmaster",'asen@54php.com'); //管理员邮箱
?>
上面这段配置文件是我们经常用的,我在这里用了define定义了常量类型的数据信息,当然你也可以设置变量形式。我今天想大家介绍的配置文件并非上面的配置文件格式,其实我们在上面已经很清楚定义的信息代表什么意识了。打个比方,在配置文件里设置语言包,你会怎么做?
怎么去设置这个变量,用过框架的朋友,在框架里经常会与数组打交道,因为PHP的数组真是太强大了在加上PHP本身Array函数库,更方便的我们去构造数组、解析数组...怎么样,想到了吗?ok,我先说说我的设计思想,之前提到了数组,当然是跟数组有关了,通过数组去构造我们想要的配置文件信息,下面是语言包的配置文件:
lang.php
<?php
/*
@title: 语言包
@author:特蓝克斯
@date: 2007-06-09
@功能: 通过数组构造数据
*/
$lang[lang] => Array
(
[lang] => 'cn',
[en] => 'en(English)',
[cn] => 'cn(China)',
[ko] => 'ko(Korean)'
);
?>
从上面的文件是不是很清楚的了解到语言包的配置情况呢?我个人还是建议大家多利用利用数组去构造数据。
你会问了,如果配置文件多了,怎么办,我要配置skin,table,mode,db...很多的配置信息( 其实这些配置多数都是在框架中运用到的内容 )那该怎么办?
这就是我今天要说的东西!其实PHP的内置函数库提供了parse_ini_file()函数可以帮我们实现解析配置文件,并以数组的形式返回.
下面是parse_ini_file()函数的说明,在这里不了解这个函数的朋友不妨先看看在继续读本文下面的内容:
语法
parse_ini_file(file,process_sections) |
参数 | 描述 |
|---|---|
| file | Required. Specifies the ini file to check 必要参数。指定ini文件对象 |
| process_sections | Optional. If set to TRUE, it returns is a multidimensional array with section names and settings included. Default is FALSEbtBIT加速站 可选参数。如果设置为True,它将返回一个包括片段名称[section name]和属性多位数组 |
提示和注意点
提示:这个函数可以用来读取应用程序中的配置文件,它与php.ini并无关联。
注意:下面的这些保留词[reserved word]可以作为ini文件的关键词来使用:null、yes、no、true和 false;而且,还有一些保留字符串[reserved character]也可以作为关键词使用:{} | & ~ ! [ () "。
ok 下面我来给大家一个例子:
default.php
<?php
/*
@title: 配置文件
@author:特蓝克斯
@date: 2007-06-09
@note: 注意配置文件格式
*/
[dir]
root = "D:/website"
[url]
root = "http://localhost"
[db]
host = "localhost"
user = "root"
pass = ""
db = ""
[lang]
lang = "cn"
en = "en(English)"
cn = "cn(China)"
ko = "ko(Korean)"
[skin]
skin = "default"
border = "#CBD3D7" ;B5AF96
title = "#ECF1F9" ;E9F0DF
field = "#FFFFFF" ;FFFFFF
left_main_font = "#000000" ;000000
left_sub_font = "#333333" ;000000
view_top_bg = "#DAE4F2" ;AFAA90
view_top_border = "#CBD3D7" ;9C947A
[mode]
template = "dev" ;dev,false
[conf]
mysql_bin = "/usr/local/mysql/bin"
mysql_version = "5.0"
mysql_check_file = "mysql_load_check"
postcode = "http://www.54php.com"
[table]
admin = "frame_administrator";table name
[admin]
debug = "1"
?>
配置设置好了,那具体怎么调用那?不要急下面我给大家一个我写好得解析文件,看看在说。
include.inc.php
<?
/*
@title: 解析文件
@author:特蓝克斯
@date: 2007-06-09
@note: 注意包含文件的路径conf/default.php
*/
$mod_file_path = __FILE__; // 当前文件路径
$include_path = explode("\\",__FILE__); //拆分当前文件目录
$module_path = explode("\\",$mod_file_path);
array_pop($include_path); //删除数组最后一个单元,也就是当前文件名
$found = array_diff($module_path, $include_path); // 获取文件名
$include_path = str_repeat('../', count($found)); // 上级文件路径
// 解析配置文件,以多为数组形式放回
$ini = parse_ini_file($include_path."conf/default.php", true);
$ck_url = parse_url($ini['url']['root']); // 调用方式 $ini['url']['root']
// 判断当前主机地址是否相同,如果不同则跳转到配置文件的 root = "http://localhost"
if($ck_url[host] != $_SERVER["HTTP_HOST"]) {
$forward_url = $ini['url']['root'];
if($_SERVER["REQUEST_URI"]) $forward_url .= $_SERVER["REQUEST_URI"];
die("<script>top.location.replace('".$forward_url."');</script>");
}
// 打印出配置文件的结构,很明显这里解析出来的都是以数组的形式调用
echo "<pre>";
print_r($ini);
echo "</pre>";
?>
大家不妨去自己设置看看.
源码下载:http://www.54php.com/bbs/viewthread.php?tid=12992&extra=page%3D1
导入论坛 引用链接 收藏 分享给好友 推荐到圈子 管理 举报
TAG: 配置文件
