设为首页 收藏本站
查看: 1220|回复: 0

[经验分享] PHP读取4种配置文件(php,ini,yaml,xml)

[复制链接]

尚未签到

发表于 2017-3-22 08:46:31 | 显示全部楼层 |阅读模式
  <?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);
}
  }

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-353294-1-1.html 上篇帖子: Compile php+php-fpm with ICC v11.1 下篇帖子: PHP Warning: PHP Startup: in Unknown on line 0
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表