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程序设计有所帮助。