PHP读取配置文件类实例(可读取ini,yaml,xml等)
本文实例讲述了PHP读取配置文件类实例。分享给大家供大家参考。具体如下:
<?php
classSettings{
var$_settings=array();
functionget($var){
$var=explode('.',$var);
$result=$this->_settings;
foreach($varas$key){
if(!isset($result[$key])){
returnfalse;
}
$result=$result[$key];
}
return$result;
}
functionload(){
trigger_error('Notyetimplemented',E_USER_ERROR);
}
}
classSettings_PHPextendsSettings{
functionload($file){
if(file_exists($file)==false){
returnfalse;
}
//Includefile
include($file);
unset($file);
//Getdeclaredvariables
$vars=get_defined_vars();
//Addtosettingsarray
foreach($varsas$key=>$val){
if($key=='this')
continue;
$this->_settings[$key]=$val;
}
}
}
classSettings_INIextendsSettings{
functionload($file){
if(file_exists($file)==false){
returnfalse;
}
$this->_settings=parse_ini_file($file,true);
}
}
classSettings_YAMLextendsSettings{
functionload($file){
if(file_exists($file)==false){
returnfalse;
}
include('spyc.php');
$this->_settings=Spyc::YAMLLoad($file);
}
}
classSettings_XMLextendsSettings{
functionload($file){
if(file_exists($file)==false){
returnfalse;
}
include('xmllib.php');
$xml=file_get_contents($file);
$data=XML_unserialize($xml);
$this->_settings=$data['settings'];
}
}
?>
/**
*针对PHP的配置,如有配置文件
*config.php
<?php
$db=array();
//Enteryourdatabasenamehere:
$db['name']='test';
//EnterthehostnameofyourMySQLserver:
$db['host']='localhost';
?>
//具体调用:
include('settings.php');//原始环境假设每个类为单独的一个类名.php文件
//Loadsettings(PHP)
$settings=newSettings_PHP;
$settings->load('config.php');
echo'PHP:'.$settings->get('db.host').'';
*
*/
读取INI文件,主要用到parser_ini_file函数,该函数返回一个数组,如第二个参数为true时则返回多维数组
/**
*ini例子:config.ini
*
[db]
name=test
host=localhost
//调用例子:
$settings=newSettings_INI;
$settings->load('config.ini');
echo'INI:'.$settings->get('db.host').'';
*/
读取XML文件,需要用到XML_PARSER,xmllib.php
/**
*XML例子:config.xml
<?xmlversion="1.0"encoding="UTF-8"?>
<settings>
<db>
<name>test</name>
<host>localhost</host>
</db>
</settings>
//Loadsettings(XML)
$settings=NewSettings_XML;
$settings->load('config.xml');
echo'XML:'.$settings->get('db.host').'';
*
*/
读取YAML格式文件,使用YAML必须使用到SPYC这个库
/**
YAML配置例子:config.yaml
db:
name:test
host:localhost
//Loadsettings(YAML)
$settings=NewSettings_YAML;
$settings->load('config.yaml');
echo'YAML:'.$settings->get('db.host').'';
*/
1.ini有点过时??
2.xml比较好,
3.yaml很好,但是毕竟没有标准化。
4.txt要自己组织格式,开放性不好。
5.类序列化。比较好,但是不熟悉的人使用比较麻烦!
6.php定义常量(你不用修改数据吗?)
所以:xml最好。
希望本文所述对大家的php程序设计有所帮助。