Zend_Config-配置

来源:互联网 发布:metismenu.js 编辑:程序博客网 时间:2024/05/29 19:21
 
功能
        在应用程序中简化访问和使用配置数据。它为在应用程序代码中访问这样的配置数据提供了一个基于用户接口的嵌入式对象属性。
        配置数据可能来自于各种支持等级结构数据存储的媒体。
        当前Zend_Config为存储在Zend_Config_Ini 和Zend_Config_Xml的文本文件中的配置数据提供了适配器


使用
        通常用户可以使用象Zend_Config_Ini 或 Zend_Config_Xml适配器类的其中之一,
        但如果配置数据在PHP数组里可用,为了使用一个简单的面向对象的接口,可以简单地传递数据到Zend_Config构造器

                // 给出一个配置数据的数组
                $configArray = array(
                    'webhost' => 'www.example.com',
                    'database' => array(
                        'adapter'     => 'pdo_mysql',
                        'params'      => array(
                            'host'     => 'db.example.com',
                            'username' => 'dbuser',
                            'password' => 'secret',
                            'dbname'   => 'mydatabase'
                        )
                    )
                );

                // 基于配置数据创建面向对象的 wrapper
                require_once 'Zend/Config.php';
                $config = new Zend_Config($configArray);

                // 输出配置数据 (结果在'www.example.com'中)
                echo $config->webhost;

                // 使用配置数据来连接数据库
                $db = Zend_Db::factory($config->database->adapter,
                                       $config->database->params->toArray());

                // 另外的用法:简单地传递 Zend_Config 对象。
                // Zend_Db factory 知道如何翻译它。
                $db = Zend_Db::factory($config->database);  

        Zend_Config 提供嵌套的对象属性语句来访问传递给它的构造器的配置数据


方法
        Zend_Config_Ini($filename, $section = null, $options = false)

                Zend_Config_Ini允许开发者通过嵌套的对象属性语法在应用程序中用熟悉的 INI 格式存储和读取配置数据。
                INI 格式在提供拥有配置数据键的等级结构和配置数据节之间的继承能力方面具有专长。
                配置数据等级结构通过用点或者句号 (.)分离键值。
                一个节可以扩展或者通过在节的名称之后带一个冒号(:)和被继承的配置数据的节的名称来从另一个节继承
                使用parse_ini_file()PHP 函数
                缺省地,键分离器字符是句号(.)。可以通过当构造Zend_Config_Ini对象时修改$config key 'nestSeparator'

                        require_once 'Zend/Config/Ini.php';
                        $config['nestSeparator'] = ':';
                        $config = new Zend_Config_Ini('/path/to/config.ini', 'staging', $config);

                $filename
                        要加载的 INI 文件。
                $section
                        在INI文件中 [section] (节)将被加载。把这个参数设置为null,所有的节将被加载。另外,一个节名称的数组被提供给加载多个节。
                $config = false
                        配置数组。下面的键被支持:
                        allowModifications:设置为true 允许随后加载文件更改。缺省为false
                        nestSeparator: 设置嵌套字符。缺省为"."

                /path/to/config.ini

                        ; 生产站点配置数据
                        [production]
                        webhost           = www.example.com
                        database.type     = pdo_mysql
                        database.host     = db.example.com
                        database.username = dbuser
                        database.password = secret
                        database.name     = dbname

                        ; 开发站点配置数据从生产站点配置数据集成并如果需要可以重写
                        [staging : production]
                        database.host     = dev.example.com
                        database.username = devuser
                        database.password = devsecret

                从INI文件取开发配置数据

                        require_once 'Zend/Config/Ini.php';
                        $config = new Zend_Config_Ini('/path/to/config.ini', 'staging');
                        echo $config->database->host; // 输出 "dev.example.com"
                        echo $config->database->name; // 输出 "dbname"


        Zend_Config_Xml($filename, $section = null, $allowModifications = false)

                Zend_Config_Xml 让开发者能够存储配置数据到一个简单XML格式并通过嵌入对象属性语法来读取。
                XML文件的根元素(root element)不相关并可以任意命名。顶级的XML元素和配置数据的节相对应。
                XML格式通过嵌入XML元素到节一级元素(section-level elements)的下面来支持等级结构组织。
                叶一级(leaf-level)的XML元素和配置数据的值相对应。节继承通过一个特殊的XML属性名为extends来支持,
                与之相对应的这个属性的值通过扩展节(extending section)来继承

                /path/to/config.xml

                        <?xml version="1.0"?>
                        <configdata>
                            <production>
                                <webhost>www.example.com</webhost>
                                <database>
                                    <type>pdo_mysql</type>
                                    <host>db.example.com</host>
                                    <username>dbuser</username>
                                    <password>secret</password>
                                    <name>dbname</name>
                                </database>
                            </production>
                            <staging extends="production">
                                <database>
                                    <host>dev.example.com</host>
                                    <username>devuser</username>
                                    <password>devsecret</password>
                                </database>
                            </staging>
                        </configdata>    

                从XML文件取开发配置数据

                        require_once 'Zend/Config/Xml.php';
                        $config = new Zend_Config_Xml('/path/to/config.xml', 'staging');
                        echo $config->database->host; // 输出 "dev.example.com"
                        echo $config->database->name; // 输出 "dbname"
原创粉丝点击