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 购物车的例子
May 04 PHP
PHP合并两个数组的两种方式的异同
Sep 14 PHP
php计算数组不为空元素个数的方法
Jan 27 PHP
smarty表格换行实例
Dec 15 PHP
php按单词截取字符串的方法
Apr 07 PHP
php抽象类用法实例分析
Jul 07 PHP
php中switch语句用法详解
Aug 17 PHP
深入理解PHP 数组之count 函数
Jun 13 PHP
PHP通过微信跳转的Code参数获取用户的openid(关键代码)
Jul 06 PHP
PHP图形计数器程序显示网站用户浏览量
Jul 20 PHP
PHP实现将MySQL重复ID二维数组重组为三维数组的方法
Aug 01 PHP
PHP yield关键字功能与用法分析
Jan 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
BBS(php &amp; mysql)完整版(六)
2006/10/09 PHP
测试php函数的方法
2013/11/13 PHP
总结PHP内存释放以及垃圾回收
2018/03/29 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
2018/06/13 PHP
php+js实现点赞功能的示例详解
2020/08/07 PHP
window.showModalDialog使用手册
2007/01/11 Javascript
js实现GridView单选效果自动设置交替行、选中行、鼠标移动行背景色
2010/05/27 Javascript
ymPrompt的doHandler方法来实现获取子窗口返回值的方法
2010/06/25 Javascript
js获取浏览器的可视区域尺寸的实现代码
2011/11/30 Javascript
js调用AJAX时Get和post的乱码解决方法
2013/06/04 Javascript
js和jquery使按钮失效为不可用状态的方法
2014/01/26 Javascript
javascript自定义in_array()函数实现方法
2015/08/03 Javascript
JavaScript实现简单Tip提示框效果
2016/04/20 Javascript
js实现的页面加载完毕之前loading提示效果完整示例【附demo源码下载】
2016/08/02 Javascript
angularjs利用directive实现移动端自定义软键盘的示例
2017/09/20 Javascript
webpack实现一个行内样式px转vw的loader示例
2018/09/13 Javascript
node.js使用redis储存session的方法
2018/09/26 Javascript
详解Webstorm 下的Angular2.0开发之路(图文)
2018/12/06 Javascript
如何在vue里面优雅的解决跨域(路由冲突问题)
2019/01/20 Javascript
Vue如何获取数据列表展示
2019/12/11 Javascript
[28:48]《真视界》- 2017年国际邀请赛
2017/09/27 DOTA
django 自定义用户user模型的三种方法
2014/11/18 Python
python使用Image处理图片常用技巧分析
2015/06/01 Python
基础的十进制按位运算总结与在Python中的计算示例
2016/06/28 Python
Python 40行代码实现人脸识别功能
2017/04/02 Python
利用Python如何实现数据驱动的接口自动化测试
2018/05/11 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
2018/12/28 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
2019/06/27 Python
python手写均值滤波
2020/02/19 Python
Python中如何引入第三方模块
2020/05/27 Python
MAC Cosmetics官方网站:魅可专业艺术彩妆
2019/04/10 全球购物
法国包包和行李箱销售网站:Bagage24.fr
2020/03/24 全球购物
群众路线教育实践活动整改落实情况汇报
2014/10/28 职场文书
幼儿园百日安全活动总结
2015/05/07 职场文书
企业工会工作总结2015
2015/05/13 职场文书
2015年暑期见闻
2015/07/14 职场文书