| 
 <?PHP 
/** 
* 读取4中配置的表信息,现支持php.ini,xml.yaml 
*/ 
class Settings{ 
var $_settings = array(); 
/** 
    * 获取某些设置的值 
    * 
    * @param unknown_type $var 
    * @return unknown 
    */ 
       function get($var) { 
         $var = explode('.', $var);          $result = $this->_settings; 
         foreach ($var as $key) { 
                   if (!isset($result[$key])) { return false; }                    $result = $result[$key]; 
         }          return $result;  
        // trigger_error ('Not yet implemented', E_USER_ERROR);//引发一个错误 
       }
        function load() { 
            trigger_error ('Not yet implemented', E_USER_ERROR); 
       }  
} 
/** 
* 针对PHP的配置,如有配置文件 
* $file= 
<?php 
$db = array();
 // Enter your database name here: 
$db['name'] = 'test'; // Enter the hostname of your MySQL server: 
$db['host'] = 'localhost'; ?>  
具体调用: 
include ('settings.php'); //原始环境假设每个类为单独的一个类名.php文件
 // Load settings (PHP) 
$settings = new Settings_PHP; 
$settings->load('config.php'); echo 'PHP: ' . $settings->get('db.host') . ''; * 
*/ 
Class Settings_PHP Extends Settings { 
function load ($file) { 
         if (file_exists($file) == false) { return false; }          // Include file 
         include ($file); 
unset($file);   //销毁指定变量 
$vars = get_defined_vars(); //返回所有已定义变量的列表,数组,变量包括服务器等相关变量, 
//通过foreach吧$file引入的变量给添加到$_settings这个成员数组中去. 
foreach ($vars as $key => $val) { 
         if ($key == 'this') continue;          $this->_settings[$key] = $val; 
} }  
}  
//////////////////////读取INI文件,主要用到parser_ini_file函数,该函数返回一个数组,如第二个参数为true时则返回多维数组///////////////////////////////////////// 
/** 
* ini例子: 
* [db] 
name = test 
host = localhost 
调用例子: 
$settings = new Settings_INI; 
$settings->load('config.ini');  
echo 'INI: ' . $settings->get('db.host') . '';
 * 
*/ 
Class Settings_INI Extends Settings { 
function load ($file) { 
         if (file_exists($file) == false) { return false; } 
         $this->_settings = parse_ini_file ($file, true); 
} 
} //////////////////////读取XML文件,需要用到XML_PARSER////////////////////////////////////////////////////////// 
/** 
* XML例子: 
    <?xml version="1.0" encoding="UTF-8"?> 
<settings> 
         <db> 
                   <name>test</name> 
                   <host>localhost</host> 
         </db> 
</settings> 
调用例子: 
// Load settings (XML) 
$settings = New Settings_XML; 
$settings->load('config.xml'); 
echo 'XML: ' . $settings->get('db.host') . ''; * 
*/ 
Class Settings_XML Extends Settings { 
function load ($file) { 
       if (file_exists($file) == false) { return false; }        /**xmllib.php为PHP XML Library, version 1.2b,相关连接:http://keithdevens.com/software/phpxml 
       xmllib.php主要特点是把一个数组转换成一个xml或吧xml转换成一个数组 
       XML_unserialize:把一个xml给转换 成一个数组 
       XML_serialize:把一个数组转换成一个xml 
       自PHP5起,simpleXML就很不错,但还是不支持将xml转换成数组的功能,所以xmlLIB还是很不错的.  
       */ 
       include ('xmllib.php');   
       $xml = file_get_contents($file); 
       $data = XML_unserialize($xml); 
       $this->_settings = $data['settings']; 
} } 
//////////////////////////////////读取YAML格式文件/////////////////////////////////////////////// 
/** 
使用YAML必须使用到SPYC这个库,相关链接在http://spyc.sourceforge.net/ 
YAML配置例子: 
db: 
   name: test 
   host: localhost  
*/ 
Class Settings_YAML Extends Settings { 
function load ($file) { 
       if (file_exists($file) == false) { return false; }
        include ('spyc.php'); 
       $this->_settings = Spyc::YAMLLoad($file); 
} }  
 |