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(7) php 字符串相关应用
Mar 05 PHP
在PHP中实现Javascript的escape()函数代码
Aug 08 PHP
在MongoDB中模拟Auto Increment的php代码
Mar 06 PHP
解析PHP中的正则表达式以及模式匹配
Jun 19 PHP
PHP 函数call_user_func和call_user_func_array用法详解
Mar 02 PHP
支持生僻字且自动识别utf-8编码的php汉字转拼音类
Jun 27 PHP
PHP定时任务延缓执行的实现
Oct 08 PHP
php查询mssql出现乱码的解决方法
Dec 29 PHP
四个常见html网页乱码问题及解决办法
Sep 08 PHP
Zend Framework前端控制器用法示例
Dec 11 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
Nov 17 PHP
laravel model 两表联查示例
Oct 24 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文件上传主要代码讲解
2013/09/30 PHP
phpinfo()中Loaded Configuration File(none)的解决方法
2017/01/16 PHP
CI框架(CodeIgniter)操作redis的方法详解
2018/01/25 PHP
Javascript 判断 object 的特定类转载
2007/02/01 Javascript
15款优秀的jQuery导航菜单插件分享
2011/07/19 Javascript
JavaScript中使用Substring删除字符串最后一个字符
2013/11/03 Javascript
父页面显示遮罩层弹出半透明状态的dialog
2014/03/04 Javascript
JavaScript获取图片真实大小代码实例
2014/09/24 Javascript
AngularJS转换响应内容
2016/01/27 Javascript
js对字符串进行编码的方法总结(推荐)
2016/11/10 Javascript
浅析vue-router jquery和params传参(接收参数)$router $route的区别
2018/08/03 jQuery
JavaScript使用表单元素验证表单的示例代码
2019/08/20 Javascript
JavaScript如何使用插值实现图像渐变
2020/06/28 Javascript
JS中作用域以及变量范围分析
2020/07/18 Javascript
Python 错误和异常代码详解
2018/01/29 Python
Scrapy基于selenium结合爬取淘宝的实例讲解
2018/06/13 Python
Python基于OpenCV实现人脸检测并保存
2019/07/23 Python
Django之PopUp的具体实现方法
2019/08/31 Python
matplotlib实现显示伪彩色图像及色度条
2019/12/07 Python
解决Pycharm的项目目录突然消失的问题
2020/01/20 Python
基于python求两个列表的并集.交集.差集
2020/02/10 Python
如何在Win10系统使用Python3连接Hive
2020/10/15 Python
python 下载文件的多种方法汇总
2020/11/17 Python
详解Python中@staticmethod和@classmethod区别及使用示例代码
2020/12/14 Python
优衣库美国官网:UNIQLO美国
2018/04/14 全球购物
Eyeko美国:屡获殊荣的睫毛膏、眼线笔和眉妆
2018/07/05 全球购物
Java多态性的定义以及类型
2014/09/16 面试题
EJB与JAVA BEAN的区别
2016/08/29 面试题
母亲节演讲稿范文
2014/01/02 职场文书
工作建议书范文
2014/05/13 职场文书
相亲大会策划方案
2014/06/05 职场文书
圣诞节活动策划方案
2014/06/09 职场文书
入党现实表现材料
2014/12/23 职场文书
酒店辞职书范文
2015/02/26 职场文书
2015年城乡环境综合治理工作总结
2015/07/24 职场文书
pytorch损失反向传播后梯度为none的问题
2021/05/12 Python