Zend Framework教程之Zend_Config_Xml用法分析


Posted in PHP onMarch 23, 2016

本文实例讲述了Zend Framework中Zend_Config_Xml用法。分享给大家供大家参考,具体如下:

Zend_Config_Xml 让开发者能够存储配置数据到一个简单XML格式并通过嵌入对象属性语法来读取。

XML文件的根元素(root element)不相关并可以任意命名。顶级的XML元素和配置数据的节相对应。

XML格式通过嵌入XML元素到节一级元素(section-level elements)的下面来支持等级结构组织。

叶一级(leaf-level)的XML元素和配置数据的值相对应。节继承通过一个特殊的XML属性名为extends来支持,与之相对应的这个属性的值通过扩展节(extending section)来继承.

返回类型

读入Zend_Config_Xml中的配置数据总是返回字串。数据从字符串到其它类型的转换留给开发者来适应他们特定的需求。

例: 使用Zend_Config_Xml

这个例子示例了从INI文件加载配置数据的Zend_Config_Xml的基本用法。在这个例子中有生产系统(production system)和开发系统(staging system)的配置数据。因为开发系统配置数据和生产系统的配置数据类似,所以开发系统的节从生产系统的节继承。在这个案例中,结果(decision)是任意的并且它可以反过来做,即生产系统节从开发系统节继承,尽管这不可能用于更复杂的情形。接着,假定下面的配置数据包含在/path/to/config.xml中:

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

接着,假定开发者需要从XML文件取开发配置数据。这非常简单,只要指定XML文件和开发系统节就可以加载这些数据了:

$config = new Zend_Config_Xml('/path/to/config.xml', 'staging');
echo $config->database->params->host;  // 输出 "dev.example.com"
echo $config->database->params->dbname; // 输出 "dbname"

例 :在 Zend_Config_Xml 使用标签(tag)属性

Zend_Config_Xml 也支持另外两种方法在配置文件里定义节点。它们都利用属性。 因为 extends 和 value 属性是保留关键字(后者是第二种使用属性的方法),它们可能不被使用。 第一种方法使用属性是把属性添加到父节点,它本身就变成了子节点:

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

另一种方法也不会使配置文件变小,但使维护变得容易,是因为你需要要写标签名两次。你可以创建一个空标签,它在 value 属性里包含它的值:

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

希望本文所述对大家基于Zend Framework框架的PHP程序设计有所帮助。

PHP 相关文章推荐
7个超级实用的PHP代码片段
Jul 11 PHP
PHP 之Section与Cookie使用总结
Sep 14 PHP
php安全开发 添加随机字符串验证,防止伪造跨站请求
Feb 14 PHP
解析php取整的几种方式
Jun 25 PHP
PHP mysql与mysqli事务使用说明 分享
Aug 17 PHP
windows下PHP_intl.dll正确配置方法(apache2.2+php5.3.5)
Jan 14 PHP
PHP strip_tags()去除HTML、XML以及PHP的标签介绍
Feb 18 PHP
php模拟登陆的实现方法分析
Jan 09 PHP
基于PHP生成简单的验证码
Jun 01 PHP
php安装dblib扩展,连接mssql的具体步骤
Mar 02 PHP
Thinkphp通过一个入口文件如何区分移动端和PC端
Apr 18 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
Nov 14 PHP
php获取文件后缀的9种方法
Mar 22 #PHP
Zend Framework教程之Zend_Registry对象用法分析
Mar 22 #PHP
Zend Framework实现多服务器共享SESSION数据的方法
Mar 22 #PHP
Zend Framework框架Smarty扩展实现方法
Mar 22 #PHP
Zend Framework框架路由机制代码分析
Mar 22 #PHP
PHP实现补齐关闭的HTML标签
Mar 22 #PHP
Zend Framework实现留言本分页功能(附demo源码下载)
Mar 22 #PHP
You might like
一个简单的MySQL数据浏览器
2006/10/09 PHP
8个出色的WordPress SEO插件收集
2011/02/26 PHP
PHP取得一个类的属性和方法的实现代码
2011/05/22 PHP
PHP文件锁函数flock()详细介绍
2014/11/18 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
2015/12/17 PHP
laravel框架上传图片实现实时预览功能
2019/10/14 PHP
JavaScript 变量基础知识
2009/11/07 Javascript
jquery学习笔记二 实现可编辑的表格
2010/04/09 Javascript
使用ExtJS技术实现的拖动树结点
2010/08/05 Javascript
学习面向对象之面向对象的基本概念:对象和其他基本要素
2010/11/30 Javascript
关于JavaScript的面向对象和继承有利新手学习
2013/01/11 Javascript
jQuery控制TR显示隐藏的三种常用方法
2014/08/21 Javascript
jQuery实现根据类型自动显示和隐藏表单
2015/03/18 Javascript
JavaScript中Math.SQRT2属性的使用详解
2015/06/14 Javascript
在页面中输出当前客户端时间javascript实例代码
2016/03/02 Javascript
基于javascript实现文字无缝滚动效果
2016/03/22 Javascript
vue,angular,avalon这三种MVVM框架优缺点
2016/04/27 Javascript
javascript css红色经典选项卡效果实现代码
2016/05/17 Javascript
很棒的Bootstrap选项卡切换效果
2016/07/01 Javascript
vue实现弹框遮罩点击其他区域弹框关闭及v-if与v-show的区别介绍
2018/09/29 Javascript
解决vue项目打包上服务器显示404错误,本地没出错的问题
2020/11/03 Javascript
使用python实现拉钩网上的FizzBuzzWhizz问题示例
2014/05/05 Python
python完成FizzBuzzWhizz问题(拉勾网面试题)示例
2014/05/05 Python
Python删除空文件和空文件夹的方法
2015/07/14 Python
Python实现将HTML转换成doc格式文件的方法示例
2017/11/20 Python
Python并行分布式框架Celery详解
2018/10/15 Python
在Python中通过threshold创建mask方式
2020/02/19 Python
python 函数嵌套及多函数共同运行知识点讲解
2020/03/03 Python
Python错误的处理方法
2020/06/23 Python
全球最大的户外用品零售商之一:The House
2018/06/12 全球购物
安全教育演讲稿
2014/05/09 职场文书
环保主题班会教案
2015/08/13 职场文书
电力安全学习心得体会
2016/01/18 职场文书
创业计划书之酒厂
2019/10/14 职场文书
python 算法题——快乐数的多种解法
2021/05/27 Python
Python连接Postgres/Mysql/Mongo数据库基本操作大全
2021/06/29 Python