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 破解防盗链图片函数
Dec 09 PHP
php提示无法加载或mcrypt没有找到 PHP 扩展 mbstring解决办法
Mar 27 PHP
PHP实现通过中文字符比率来判断垃圾评论的方法
Oct 20 PHP
php+mysqli批量查询多张表数据的方法
Jan 29 PHP
PHP获取ip对应地区和使用网络类型的方法
Mar 11 PHP
PHP中数据类型转换的三种方式
Apr 02 PHP
php判断访问IP的方法
Jun 19 PHP
浅谈PHP中的
Apr 23 PHP
PHP中函数gzuncompress无法使用的解决方法
Mar 02 PHP
PHP字典树(Trie树)定义与实现方法示例
Oct 09 PHP
Laravel使用原生sql语句并调用的方法
Oct 09 PHP
浅谈如何提高PHP代码质量之端到端集成测试
May 28 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
php开发环境配置记录
2011/01/14 PHP
php中curl使用指南
2015/02/05 PHP
关于php微信订阅号开发之token验证后自动发送消息给订阅号但是没有消息返回的问题
2015/12/21 PHP
php抽象方法和普通方法的区别点总结
2019/10/13 PHP
验证用户是否修改过页面的数据的实现方法
2008/09/26 Javascript
Jsonp 跨域的原理以及Jquery的解决方案
2011/06/27 Javascript
jQuery bxCarousel实现图片滚动切换效果示例代码
2013/05/15 Javascript
Jquery 监视按键,按下回车键触发某方法的实现代码
2014/05/11 Javascript
jQuery中ready事件用法实例
2015/01/19 Javascript
JS对字符串编码的几种方式使用指南
2015/05/14 Javascript
AngularJS的脏检查深入分析
2017/04/22 Javascript
在页面中引入js的两种方法(推荐)
2017/08/29 Javascript
JS和jQuery通过this获取html标签中的属性值(实例代码)
2017/09/11 jQuery
JS基于开关思想实现的数组去重功能【案例】
2019/02/18 Javascript
vue App.vue中的公共组件改变值触发其他组件或.vue页面监听
2019/05/31 Javascript
浅谈Vue2.4.0 $attrs与inheritAttrs的具体使用
2020/03/08 Javascript
python抓取网页内容示例分享
2014/02/24 Python
Python SVM(支持向量机)实现方法完整示例
2018/06/19 Python
Pandas读取MySQL数据到DataFrame的方法
2018/07/25 Python
python 3.6.5 安装配置方法图文教程
2018/09/18 Python
YUV转为jpg图像的实现
2019/12/09 Python
python3 googletrans超时报错问题及翻译工具优化方案 附源码
2020/12/23 Python
python 邮件检测工具mmpi的使用
2021/01/04 Python
Paradigit比利时电脑卖场:购买笔记本、电脑、平板和外围设备
2016/11/28 全球购物
JAKO-O德国野酷台湾站:德国首屈一指的婴幼童用品品牌
2019/01/14 全球购物
奥地利领先的在线药房:SHOP APOTHEKE
2019/10/07 全球购物
国际经济贸易专业推荐信
2013/11/06 职场文书
会计电算化个人自我评价
2013/11/17 职场文书
四年级下册教学反思
2014/02/01 职场文书
公司司机岗位职责
2014/02/07 职场文书
生物技术专业求职信
2014/06/10 职场文书
司机工作自我鉴定
2014/09/19 职场文书
2014年圣诞节寄语
2014/12/08 职场文书
质检员工作总结2015
2015/04/25 职场文书
升学宴来宾致辞
2015/07/27 职场文书
如何使用Maxwell实时同步mysql数据
2021/04/08 MySQL