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 相关文章推荐
用文本文件制作留言板提示(下)
Oct 09 PHP
PHP添加MySQL数据记录代码
Jun 07 PHP
php 表单提交大量数据发生丢失的解决方法
Mar 03 PHP
yii操作cookie实例简介
Jul 09 PHP
PHP链接MySQL的常用扩展函数
Oct 23 PHP
PHP实现163邮箱自动发送邮件
Mar 29 PHP
PHP小偷程序的设计与实现方法详解
Oct 15 PHP
PHP编程快速实现数组去重的方法详解
Jul 22 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
Jul 26 PHP
详解PHP如何更好的利用PHPstorm的自动提示
Aug 18 PHP
php实现微信公众平台发红包功能
Jun 14 PHP
Laravel框架实现修改登录和注册接口数据返回格式的方法
Aug 17 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
在WAMP环境下搭建ZendDebugger php调试工具的方法
2011/07/18 PHP
Yii实现多数据库主从读写分离的方法
2014/12/29 PHP
PHP封装请求类实例分析【基于Yii框架】
2019/10/17 PHP
Js基础学习资料
2010/11/23 Javascript
jquery 查找iframe父级页面元素的实现代码
2011/08/28 Javascript
页面载入结束自动调用js函数示例
2013/09/23 Javascript
2种jQuery 实现刮刮卡效果
2015/02/01 Javascript
详细介绍jQuery.outerWidth() 函数具体用法
2015/07/20 Javascript
jquery删除table当前行的实例代码
2016/10/07 Javascript
vue.js中Vue-router 2.0基础实践教程
2017/05/08 Javascript
初探js和简单隐藏效果的实例
2017/11/23 Javascript
深入浅析AngularJs模版与v-bind
2018/07/06 Javascript
JS判断字符串是否为整数的方法--简单的正则判断
2018/07/23 Javascript
详解nodejs 开发企业微信第三方应用入门教程
2019/03/12 NodeJs
js时间转换毫秒的实例代码
2019/08/21 Javascript
python去除空格和换行符的实现方法(推荐)
2017/01/04 Python
django实现前后台交互实例
2017/08/07 Python
Python之Scrapy爬虫框架安装及使用详解
2017/11/16 Python
解决Mac安装scrapy失败的问题
2018/06/13 Python
对Pytorch神经网络初始化kaiming分布详解
2019/08/18 Python
PyQt+socket实现远程操作服务器的方法示例
2019/08/22 Python
django3.02模板中的超链接配置实例代码
2020/02/04 Python
Python 线性回归分析以及评价指标详解
2020/04/02 Python
Python新手学习raise用法
2020/06/03 Python
selenium设置浏览器为headless无头模式(Chrome和Firefox)
2021/01/08 Python
西铁城美国官方网站:Citizen Watch美国
2019/11/08 全球购物
简历中自我评价怎么写
2014/02/12 职场文书
乡镇三项教育实施方案
2014/03/30 职场文书
党员教师个人对照检查材料范文
2014/09/25 职场文书
部门优秀员工推荐信
2015/03/24 职场文书
就业意向书范本
2015/05/11 职场文书
2016圣诞节贺卡寄语
2015/12/07 职场文书
用React Native制作一个简单的游戏引擎
2021/05/27 Javascript
Win11电脑显示本地时间与服务器时间不一致怎么解决?
2022/04/05 数码科技
解决Mysql报错 Table 'mysql.user' doesn't exist
2022/05/06 MySQL
处理canvas绘制图片模糊问题
2022/05/11 Javascript