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 29 PHP
谷歌音乐搜索栏的提示功能php修正代码
May 09 PHP
PHP将整个网站生成HTML纯静态网页的方法总结
Feb 05 PHP
php调用google接口生成二维码示例
Apr 28 PHP
CodeIgniter模板引擎使用实例
Jul 15 PHP
Codeigniter框架的更新事务(transaction)BUG及解决方法
Jul 25 PHP
codeigniter上传图片不能正确识别图片类型问题解决方法
Jul 25 PHP
ThinkPHP在新浪SAE平台的部署实例
Oct 31 PHP
PHP设置进度条的方法
Jul 08 PHP
PHPStorm+XDebug进行调试图文教程
Jun 13 PHP
PHP设计模式之装饰器模式实例详解
Feb 07 PHP
PHP基于面向对象封装的分页类示例
Mar 15 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
2.PHP入门
2006/10/09 PHP
PHP将二维数组某一个字段相同的数组合并起来的方法
2016/02/26 PHP
Zend Framework动作助手Url用法详解
2016/03/05 PHP
CSS+JS构建的图片查看器
2006/07/22 Javascript
Prototype ObjectRange对象学习
2009/07/19 Javascript
浅谈tudou土豆网首页图片延迟加载的效果
2010/06/23 Javascript
如何确保JavaScript的执行顺序 之jQuery.html并非万能钥匙
2011/03/03 Javascript
javascript ready和load事件的区别示例介绍
2013/08/30 Javascript
js history对象简单实现返回和前进
2013/10/30 Javascript
调用jQuery滑出效果时闪烁的解决方法
2014/03/27 Javascript
一个不错的字符串转码解码函数(自写)
2014/07/31 Javascript
简单实现js页面切换功能
2021/01/10 Javascript
PhotoSwipe异步动态加载图片方法
2016/08/25 Javascript
JavaScript仿微博发布信息案例
2016/11/16 Javascript
微信小程序之picker日期和时间选择器
2017/02/09 Javascript
微信小程序之MaterialDesign--input组件详解
2017/02/15 Javascript
weex slider实现滑动底部导航功能
2017/08/28 Javascript
Vue.js2.0中的变化小结
2017/10/24 Javascript
微信小程序实现动态设置页面标题的方法【附源码下载】
2017/11/29 Javascript
详解如何为你的angular app构建一个第三方库
2018/12/07 Javascript
如何检查一个对象是否为空
2019/04/11 Javascript
微信小程序获取位置展示地图并标注信息的实例代码
2019/09/01 Javascript
微信小程序中使用 async/await的方法实例分析
2020/05/06 Javascript
ES6对象操作实例详解
2020/05/23 Javascript
详解vue路由
2020/08/05 Javascript
Python实现的拉格朗日插值法示例
2019/01/08 Python
python循环嵌套的多种使用方法解析
2019/11/29 Python
利用CSS3的transition属性实现滑动效果
2015/08/05 HTML / CSS
css3 flex实现div内容水平垂直居中的几种方法
2020/03/27 HTML / CSS
西班牙国家航空官方网站:Iberia
2017/11/16 全球购物
Move Free官方海外旗舰店:美国骨关节健康专业品牌
2017/12/06 全球购物
艺术用品:Arteza
2018/11/25 全球购物
巴西最大的巴士票务门户:Quero Passagem
2020/11/21 全球购物
大学生活学习的自我评价
2013/12/03 职场文书
财务主管自我鉴定
2014/01/17 职场文书
经济国贸专业求职信
2014/06/18 职场文书