zoukankan      html  css  js  c++  java
  • php网页读取四种配置文件的代码

    php读取四种配置文件

       分类:   PHP开发(1)
    <?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);
    }

    }

  • 相关阅读:
    C/C++筛选法算素数
    JAVAFX-5事件总结
    JAVAFX-5 开发应用
    JAVAFX-4 开发应用
    JAVAFX-3 开发应用
    JAVAFX-1 开发应用
    JAVAFX-2 开发应用
    Swing 100行画图示例
    Java的Json解析包FastJson使用
    杨辉三角
  • 原文地址:https://www.cnblogs.com/yuanscn/p/10980398.html
Copyright © 2011-2022 走看看