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 和 MySQL 开发的 8 个技巧
Jan 02 PHP
jQuery EasyUI API 中文文档 - DateBox日期框
Oct 15 PHP
PHP中“简单工厂模式”实例代码讲解
Sep 04 PHP
php中使用preg_match_all匹配文章中的图片
Feb 06 PHP
深入PHP autoload机制的详解
Jun 09 PHP
CURL状态码列表(详细)
Jun 27 PHP
php获取当前页面完整URL地址
Dec 30 PHP
Yii2 ActiveRecord多表关联及多表关联搜索的实现
Jun 30 PHP
thinkPHP分组后模板无法加载问题解决方法
Jul 12 PHP
浅谈PHP正则中的捕获组与非捕获组
Jul 18 PHP
PDO的安全处理与事物处理方法
Oct 31 PHP
关于Laravel Route重定向的一个注意点
Jan 16 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读注册表
2006/10/09 PHP
注意!PHP 7中不要做的10件事
2016/09/18 PHP
smarty模板的使用方法实例分析
2019/09/18 PHP
更正确的asp冒泡排序
2007/05/24 Javascript
jquery 模拟雅虎首页的点击对话框效果
2010/04/11 Javascript
JavaScript Chart 插件整理
2010/06/18 Javascript
『jQuery』.html(),.text()和.val()的概述及使用
2013/04/22 Javascript
JavaScript代码简单实现求杨辉三角给定行的最大值
2013/10/29 Javascript
jQuery实现复选框成对选择及对应取消的方法
2015/03/03 Javascript
javascript关于运动的各种问题经典总结
2015/04/27 Javascript
JS实现鼠标滑过显示边框的菜单效果
2016/09/21 Javascript
微信小程序 富文本转文本实例详解
2016/10/24 Javascript
Vue2.0实现购物车功能
2017/06/05 Javascript
浅谈React中组件间抽象
2018/01/27 Javascript
基于IView中on-change属性的使用详解
2018/03/15 Javascript
深入理解JS的事件绑定、事件流模型
2018/05/13 Javascript
Vue表单demo v-model双向绑定问题
2018/06/29 Javascript
js拖动滑块和点击水波纹效果实例代码
2018/10/16 Javascript
微信小程序如何使用云开发
2019/05/17 Javascript
以Flask为例讲解Python的框架的使用方法
2015/04/29 Python
Python3结合Dlib实现人脸识别和剪切
2018/01/24 Python
Python实现插入排序和选择排序的方法
2019/05/12 Python
十行代码使用Python写一个USB病毒
2019/06/21 Python
基于keras 模型、结构、权重保存的实现
2020/01/24 Python
用opencv给图片换背景色的示例代码
2020/07/08 Python
驴妈妈旅游网:中国新型的B2C旅游电子商务网站
2016/08/16 全球购物
联想新西兰官方网站:Lenovo New Zealand
2018/10/30 全球购物
饭店工作计划书
2014/01/10 职场文书
函授药学自我鉴定
2014/02/07 职场文书
我的大学生活演讲稿
2014/04/25 职场文书
自愿离婚协议书范文2014
2014/10/12 职场文书
质量整改通知单
2015/04/21 职场文书
中学生勤俭节约倡议书
2015/04/29 职场文书
2016大学迎新晚会开场白
2015/11/24 职场文书
python实现三阶魔方还原的示例代码
2021/04/28 Python
在MySQL中你成功的避开了所有索引
2022/04/20 MySQL