`

PHP读取4种配置文件(php,ini,yaml,xml)

阅读更多

<?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);
}

}

分享到:
评论

相关推荐

    python读取配置文件方式(ini、yaml、xml)

    本文将详细讲解如何使用Python读取三种常见的配置文件格式:ini、yaml和xml。 **一、ini文件** ini文件是一种简单易读的文本格式,常用于存储应用程序的配置信息。其基本结构包括节(section)和键值对(key-value...

    PHP读取配置文件类实例(可读取ini,yaml,xml等)

    本文将详细介绍如何通过PHP类来读取不同类型的配置文件,包括ini、yaml、xml格式的配置文件。下面将对每个配置文件类型及其读取方法进行详细说明。 首先,我们来看一个基础的配置文件读取类`Settings`,它提供了一...

    Java如何读取配置文件

    2. 读取INI文件: ```java import org.apache.commons.configuration.Configuration; import org.apache.commons.configuration.INIConfiguration; import org.apache.commons.configuration.ConfigurationException...

    C++读取配置文件

    首先,配置文件通常是文本格式,如INI、XML、JSON或YAML,它们提供了键值对的形式来存储数据。在这个场景中,我们可能会假设配置文件是简单的ASCII或UTF-8文本文件,以易于解析。 1. **基础结构**: - 创建一个...

    保存配置文件和读取配置文件

    首先,配置文件的格式可以多样化,如文本文件(如.ini、.txt)、XML文件、JSON文件、YAML文件或特定的二进制格式。其中,文本文件易于理解和编辑,而XML、JSON和YAML提供了结构化的数据表示,适合复杂的配置数据;二...

    改动或读取配置文件

    常见的配置文件格式有JSON、XML、YAML和INI等。这些文件格式各有特点,例如JSON以键值对形式存储数据,易于阅读和解析;XML结构更严谨,支持嵌套和命名空间;YAML简洁明了,适合人类编写;INI文件则简单直观,主要...

    设置配置文件信息

    配置文件通常有多种格式,如`.ini`(初始化文件)、`.xml`(可扩展标记语言)、`.json`(JavaScript对象表示法)和`.yaml`(YAML Ain't Markup Language)。每种格式都有其特定的语法和优点,例如JSON和XML提供了...

    C++:VC读取ini文件,源代码

    在介绍C++中使用Visual C++(简称VC)读取INI文件的源代码之前,先了解一下INI文件的结构和作用是非常必要的。INI文件是一种配置文件格式,通常用于存储程序的配置信息。它由若干个节(Section)组成,每个节内可以...

    关于读取Src下配置文件的那个传说

    这些文件可能是JSON、XML、YAML或纯文本格式,根据语言和框架的不同,读取方式也会有所差异。 1. **Java**:在Java中,如果使用Maven或Gradle构建工具,配置文件会被自动复制到类路径下的`resources`目录。使用`...

    配置文件节点读写

    首先,配置文件通常有多种格式,如`.ini`、`.xml`、`.json`、`.yaml`等。每种格式都有其特点和适用场景,例如`.ini`文件简洁易懂,适用于小型项目;`.xml`结构严谨,适合复杂的配置结构;`.json`轻量级且流行,广泛...

    项目生成与读取配置文件测试

    - 在Python中,可以使用`json`、`yaml`或`configparser`库来读取JSON、YAML和INI格式的文件。 - 在Java中,`java.util.Properties`用于读取属性文件,`org.yaml.snakeyaml`库处理YAML。 - 在Node.js中,`fs`模块...

    fst 配置文件读取

    1. **配置文件格式**:配置文件可以有多种格式,如ASCII文本(最常见)、JSON、XML、YAML等。每种格式都有其特点,例如,文本格式易于阅读和编辑,而JSON和XML则更便于数据交换。在处理“fst”配置文件时,需要根据...

    Ini配置文件读写.zip

    然而,对于大型复杂的应用,可能会选择更安全且功能丰富的配置文件格式,如JSON、XML或YAML。 总之,Ini配置文件提供了一种简单的方式来进行应用程序的配置管理。通过了解其基本结构和编程接口,开发者能够轻松地...

    php INI配置文件的解析实现分析

    除了INI文件,其他常见的配置文件类型包括PHP数组、XML、YAML等。其中,PHP数组是配置信息最终的常见数据结构,其他格式的配置通常会解析为PHP数组形式。 4. **ZendFramework的配置文件** ZendFramework也使用INI...

    读取配置文件的程序

    常见的配置文件格式有XML、JSON、YAML,以及我们今天讨论的主题——INI文件。"读取配置文件的程序"通常指的是能够解析并提取INI文件中数据的软件组件。 INI文件是一种轻量级的配置文件格式,由键值对组成,用于存储...

    基于C语言的轻量级读取、创建配置文件的函数库.zip

    配置文件的格式多种多样,如简单的ASCII文本文件(如.ini或.conf文件)、XML文件,甚至JSON或YAML等更复杂的格式。在这个轻量级的C语言库中,开发者可能已经实现了对常见文本格式配置文件的读写操作,使程序员能够...

    读取.ini文件

    常见的配置文件格式有XML、JSON、YAML,以及我们今天讨论的主题——`.ini`文件。`.ini`文件源于DOS和Windows系统,因其简单易读的文本格式而广泛应用于各种跨平台项目。 `.ini`文件的基本结构通常由一系列的节...

Global site tag (gtag.js) - Google Analytics