欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2022-05-04 08:30:21
...

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. }
复制代码