设置配置文件

上一篇 / 下一篇  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()函数的作用是:解析一个配置文件,并以一个数组的形式返回它的属性[setting]。

语法

parse_ini_file(file,process_sections)


参数

描述
fileRequired. Specifies the ini file to check
必要参数。指定ini文件对象
process_sectionsOptional. 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: 配置文件

十一文的个人空间 引用 删除 十一文   /   2007-06-22 17:34:43
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

关于作者