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可逆加密/解密函数分享
Sep 25 PHP
php IP转换整形(ip2long)的详解
Jun 06 PHP
PHP JS Ip地址及域名格式检测代码
Sep 27 PHP
PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例
May 12 PHP
Zend Framework教程之路由功能Zend_Controller_Router详解
Mar 07 PHP
详解PHP的Yii框架中组件行为的属性注入和方法注入
Mar 18 PHP
php 判断字符串编码是utf-8 或gb2312实例
Nov 01 PHP
php版阿里云OSS图片上传类详解
Dec 01 PHP
curl 出现错误的调试方法(必看)
Feb 13 PHP
详解php中serialize()和unserialize()函数
Jul 08 PHP
Laravel 简单实现Ajax滚动加载示例
Oct 22 PHP
Laravel框架中队列和工作(Queues、Jobs)操作实例详解
Apr 06 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 方便水印和缩略图的图形类
2009/05/21 PHP
用PHP为SHOPEX增加日志功能代码
2010/07/02 PHP
mac下Apache + MySql + PHP搭建网站开发环境
2014/06/02 PHP
非常好用的Zend Framework分页类
2014/06/25 PHP
PHP实现采集中国天气网未来7天天气
2014/10/15 PHP
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
JS 模态对话框和非模态对话框操作技巧汇总
2013/04/15 Javascript
关于jquery css的使用介绍
2013/04/18 Javascript
jQuery 无刷新分页实例代码
2013/11/12 Javascript
node.js应用后台守护进程管理器Forever安装和使用实例
2014/06/01 Javascript
jquery中表单 多选框的一种巧妙写法
2015/09/06 Javascript
Bootstrap精简教程
2015/11/27 Javascript
详解Document.Cookie
2015/12/25 Javascript
微信小程序 解决swiper不显示图片的方法
2017/01/04 Javascript
详解微信小程序开发之——wx.showToast(OBJECT)的使用
2017/01/18 Javascript
微信小程序时间轴实现方法示例
2019/01/14 Javascript
layui的数据表格+springmvc实现搜索功能的例子
2019/09/28 Javascript
Vue axios 将传递的json数据转为form data的例子
2019/10/29 Javascript
JavaScript数值类型知识汇总
2019/11/17 Javascript
Python中使用md5sum检查目录中相同文件代码分享
2015/02/02 Python
python通过邮件服务器端口发送邮件的方法
2015/04/30 Python
python next()和iter()函数原理解析
2020/02/07 Python
Python中的None与 NULL(即空字符)的区别详解
2020/09/24 Python
使用django自带的user做外键的方法
2020/11/30 Python
python爬虫中url管理器去重操作实例
2020/11/30 Python
中国宠物用品商城:E宠商城
2016/08/27 全球购物
加拿大时尚少女服装品牌:Garage
2016/10/10 全球购物
鞋子女王塔玛拉·梅隆同名奢侈品牌:Tamara Mellon
2017/11/22 全球购物
JD Sports马来西亚:英国领先的运动鞋和运动服饰零售商
2018/03/13 全球购物
毕业生求职简历的自我评价
2013/10/07 职场文书
中专生职业生涯规划书范文
2013/12/29 职场文书
大学生文员专业个人求职信范文
2014/01/05 职场文书
毕业生求职自荐信怎么写
2014/01/08 职场文书
生产部厂长职位说明书
2014/03/03 职场文书
素质教育标语
2014/06/27 职场文书
强烈推荐:小学生:暑假作息时间表(值得收藏)
2019/07/09 职场文书