Maison  >  Article  >  développement back-end  >  PHP读取四种配置文件(php,ini,yaml,xml)的例子

PHP读取四种配置文件(php,ini,yaml,xml)的例子

WBOY
WBOYoriginal
2016-07-25 09:11:471006parcourir

PHP读取四种配置文件(php,ini,yaml,xml)的例子,代码如下,大家自己看吧,说不好哪天就能用得上哦。

  1. /**

  2. * 读取4中配置的表信息,现支持php.ini,xml.yaml
  3. */
  4. class Settings{
  5. var $_settings = array();
  6. /**
  7. * 获取某些设置的值
  8. *
  9. * @param unknown_type $var
  10. * @return unknown
  11. */
  12. function get($var) {
  13. $var = explode('.', $var);
  14. $result = $this->_settings;

  15. foreach ($var as $key) {
  16. if (!isset($result[$key])) { return false; }
  17. $result = $result[$key];

  18. }
  19. return $result;

  20. // trigger_error ('Not yet implemented', E_USER_ERROR);//引发一个错误

  21. }
  22. function load() {

  23. trigger_error ('Not yet implemented', E_USER_ERROR);
  24. }
  25. }
  26. /**

  27. * 针对PHP的配置,如有配置文件
  28. * $file=
  29. $db = array();
  30. // Enter your database name here:

  31. $db['name'] = 'test';
  32. // Enter the hostname of your MySQL server:

  33. $db['host'] = 'localhost';
  34. ?>

  35. 具体调用:

  36. include ('settings.php'); //原始环境假设每个类为单独的一个类名.php文件
  37. // Load settings (PHP)

  38. $settings = new Settings_PHP;
  39. $settings->load('config.php');
  40. echo 'PHP: ' . $settings->get('db.host') . '';

  41. *

  42. */
  43. Class Settings_PHP Extends Settings {
  44. function load ($file) {
  45. if (file_exists($file) == false) { return false; }
  46. // Include file

  47. include ($file);
  48. unset($file); //销毁指定变量
  49. $vars = get_defined_vars(); //返回所有已定义变量的列表,数组,变量包括服务器等相关变量,
  50. //通过foreach吧$file引入的变量给添加到$_settings这个成员数组中去.
  51. foreach ($vars as $key => $val) {
  52. if ($key == 'this') continue;
  53. $this->_settings[$key] = $val;

  54. }
  55. }
  56. }
  57. //////////////////////读取INI文件,主要用到parser_ini_file函数,该函数返回一个数组,如第二个参数为true时则返回多维数组/////////////////////

  58. /**
  59. * ini例子:
  60. * [db]
  61. name = test
  62. host = localhost
  63. 调用例子:
  64. $settings = new Settings_INI;
  65. $settings->load('config.ini');
  66. echo 'INI: ' . $settings->get('db.host') . '';
  67. *

  68. */
  69. Class Settings_INI Extends Settings {
  70. function load ($file) {
  71. if (file_exists($file) == false) { return false; }
  72. $this->_settings = parse_ini_file ($file, true);
  73. }
  74. }
  75. //////////////////////读取XML文件,需要用到XML_PARSER////////////////////////

  76. /**
  77. * XML例子:
  78. test
  79. localhost
  80. 调用例子:
  81. // Load settings (XML)
  82. $settings = New Settings_XML;
  83. $settings->load('config.xml');
  84. echo 'XML: ' . $settings->get('db.host') . '';
  85. *
  86. */
  87. Class Settings_XML Extends Settings {
  88. function load ($file) {
  89. if (file_exists($file) == false) { return false; }
  90. /**xmllib.php为PHP XML Library, version 1.2b,相关连接:http://keithdevens.com/software/phpxml

  91. xmllib.php主要特点是把一个数组转换成一个xml或吧xml转换成一个数组
  92. XML_unserialize:把一个xml给转换 成一个数组
  93. XML_serialize:把一个数组转换成一个xml
  94. 自PHP5起,simpleXML就很不错,但还是不支持将xml转换成数组的功能,所以xmlLIB还是很不错的.
  95. */
  96. include ('xmllib.php');
  97. $xml = file_get_contents($file);
  98. $data = XML_unserialize($xml);
  99. $this->_settings = $data['settings'];
  100. }
  101. }
  102. //////////////////////////////////读取YAML格式文件///////////////////////////////////////////////
  103. /**
  104. 使用YAML必须使用到SPYC这个库,相关链接在http://spyc.sourceforge.net/
  105. YAML配置例子:
  106. db:
  107. name: test
  108. host: localhost
  109. */
  110. Class Settings_YAML Extends Settings {
  111. function load ($file) {
  112. if (file_exists($file) == false) { return false; }
  113. include ('spyc.php');

  114. $this->_settings = Spyc::YAMLLoad($file);
  115. }
  116. }
复制代码


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn