php读取配置文件(php,ini,yaml,xml)方法
_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=具体调用: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 = testhost = 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例子: test localhost 调用例子:// 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);}}