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 相关文章推荐
php5中类的学习
Mar 28 PHP
wiki-shan写的php在线加密的解密程序
Sep 07 PHP
PHP 验证码的实现代码
Jul 17 PHP
使用PHP遍历文件夹与子目录的函数代码
Sep 26 PHP
PHP闭包实例解析
Sep 08 PHP
php实现无限级分类
Dec 24 PHP
php+mysql实现无限级分类
Nov 11 PHP
64位windows系统下安装Memcache缓存
Dec 06 PHP
php编程中echo用逗号和用点号连接的区别
Mar 26 PHP
Thinkphp实现短信验证注册功能
Oct 18 PHP
Thinkphp5框架简单实现钩子(Hook)行为的方法示例
Sep 03 PHP
ThinkPHP5分页paginate代码实例解析
Nov 10 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
967 个函式
2006/10/09 PHP
PHP中实现汉字转区位码应用源码实例解析
2010/06/14 PHP
php类中private属性继承问题分析
2012/11/01 PHP
解析使用ThinkPHP应该掌握的调试手段
2013/06/20 PHP
PHP大批量插入数据库的3种方法和速度对比
2014/07/08 PHP
php中switch与ifelse的效率区别及适用情况分析
2015/02/12 PHP
PHP嵌套输出缓冲代码实例
2015/05/12 PHP
浅谈本地WAMP环境的搭建
2015/05/13 PHP
php中 $$str 中 &quot;$$&quot; 的详解
2015/07/06 PHP
yii2 modal弹窗之ActiveForm ajax表单异步验证
2016/06/13 PHP
javascript小组件 原生table排序表格脚本(兼容ie firefox opera chrome)
2012/07/25 Javascript
jQuery客户端分页实例代码
2013/11/18 Javascript
js防止页面被iframe调用的方法
2014/10/30 Javascript
vue 项目如何引入微信sdk接口的方法
2017/12/18 Javascript
vuejs router history 配置到iis的方法
2018/09/20 Javascript
vue中的mvvm模式讲解
2019/01/31 Javascript
JavaScript代码实现微博批量取消关注功能
2021/02/05 Javascript
[02:15]2014DOTA2国际邀请赛 专访LGD.lin小兔子是大腿
2014/07/14 DOTA
基于python的汉字转GBK码实现代码
2012/02/19 Python
Python序列之list和tuple常用方法以及注意事项
2015/01/09 Python
Python中的字符串类型基本知识学习教程
2016/02/04 Python
Windows平台Python连接sqlite3数据库的方法分析
2017/07/12 Python
python的dataframe转换为多维矩阵的方法
2018/04/11 Python
Python pyinotify模块实现对文档的实时监控功能方法
2018/10/13 Python
Python threading的使用方法解析
2019/08/28 Python
python+selenium+PhantomJS抓取网页动态加载内容
2020/02/25 Python
自荐信不宜过于夸大
2013/11/06 职场文书
广告业务员岗位职责
2014/02/06 职场文书
幼儿园运动会加油词
2014/02/14 职场文书
反四风个人对照检查材料思想汇报
2014/09/25 职场文书
党干部专题民主生活会对照检查材料思想汇报
2014/10/06 职场文书
社区综治工作汇报
2014/10/27 职场文书
离婚协议书格式
2014/11/21 职场文书
golang import自定义包方式
2021/04/29 Golang
数据设计之权限的实现
2022/08/05 MySQL
Win10服务全部禁用了怎么启动?Win10服务全部禁用解决方法
2022/09/23 数码科技