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 相关文章推荐
php 分页类 扩展代码
Jun 11 PHP
PHP 函数执行效率的小比较
Oct 17 PHP
应用开发中涉及到的css和php笔记分享
Aug 02 PHP
PHP原生模板引擎 最简单的模板引擎
Apr 25 PHP
解析htaccess伪静态的规则
Jun 18 PHP
PHP中使用FFMPEG获取视频缩略图和视频总时长实例
May 04 PHP
php实现过滤表单提交中html标签的方法
Oct 17 PHP
windows中为php安装mongodb与memcache
Jan 06 PHP
PHP实现简单爬虫的方法
Jul 29 PHP
CodeIgniter集成smarty的方法详解
May 26 PHP
PHP ADODB生成下拉列表框功能示例
May 29 PHP
TP5(thinkPHP5)框架基于ajax与后台数据交互操作简单示例
Sep 03 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
图书管理程序(一)
2006/10/09 PHP
详解PHP显示MySQL数据的三种方法
2008/06/05 PHP
php正则表达匹配中文问题分析小结
2012/03/25 PHP
ThinkPHP中I(),U(),$this-&gt;post()等函数用法
2014/11/22 PHP
PHP实现的堆排序算法详解
2017/08/17 PHP
php-fpm超时时间设置request_terminate_timeout资源问题分析
2019/09/27 PHP
PHP加MySQL消息队列深入理解
2021/02/27 PHP
基于jquery的修改当前TAB显示标题的代码
2010/12/11 Javascript
jQuery实现带动画效果的二级下拉导航方法
2015/03/11 Javascript
AngularJS基础学习笔记之控制器
2015/05/10 Javascript
jQuery实现鼠标经过事件的延时处理效果
2020/08/20 Javascript
js中最容易被忽视的事件问题大总结
2016/05/15 Javascript
js实现五星评价功能
2017/03/08 Javascript
vue2 中如何实现动态表单增删改查实例
2017/06/09 Javascript
vue + typescript + video.js实现 流媒体播放 视频监控功能
2019/07/07 Javascript
vuex vue简单使用知识点总结
2019/08/29 Javascript
json_decode 索引为数字时自动排序问题解决方法
2020/03/28 Javascript
[03:46]显微镜下的DOTA2第七期——满血与残血
2014/06/20 DOTA
[44:15]DOTA2上海特级锦标赛主赛事日 - 5 败者组决赛Liquid VS EG第二局
2016/03/06 DOTA
学习python之编写简单简单连接数据库并执行查询操作
2016/02/27 Python
Python基于Flask框架配置依赖包信息的项目迁移部署
2018/03/02 Python
Python实现判断给定列表是否有重复元素的方法
2018/04/11 Python
利用Python实现微信找房机器人实例教程
2019/03/10 Python
基于CSS3的animation属性实现微信拍一拍动画效果
2020/06/22 HTML / CSS
HTML5 Canvas绘制五星红旗
2016/05/04 HTML / CSS
Boston Proper官网:美国女装品牌
2017/10/30 全球购物
Hawes & Curtis澳大利亚官网:英国经典服饰品牌
2018/10/29 全球购物
商务日语毕业生自荐信
2013/11/23 职场文书
办理生育手续介绍信
2014/01/14 职场文书
公司副总经理任命书
2014/06/05 职场文书
竞聘自述材料
2014/08/25 职场文书
县委常委班子对照检查材料思想汇报
2014/09/28 职场文书
2015年圣诞节活动总结
2015/03/24 职场文书
考研经验交流会策划书
2015/11/02 职场文书
公司开业的祝贺语大全(60条)
2019/07/05 职场文书
python 批量压缩图片的脚本
2021/06/02 Python