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 相关文章推荐
CodeIgniter实现更改view文件夹路径的方法
Jul 04 PHP
PHP学习笔记(三):数据类型转换与常量介绍
Apr 17 PHP
利用PHP抓取百度阅读的方法示例
Dec 18 PHP
PHPExcel导出2003和2007的excel文档功能示例
Jan 04 PHP
PHP培训要多少钱
Jun 06 PHP
php基于数组函数实现关联表的编辑操作示例
Jul 04 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
Aug 29 PHP
php通过pecl方式安装扩展的实例讲解
Feb 02 PHP
PHP设计模式之装饰器模式实例详解
Feb 07 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
Feb 08 PHP
Laravel框架模板加载,分配变量及简单路由功能示例
Jun 11 PHP
Laravel 验证码认证学习记录小结
Dec 20 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 daddslashes 使用方法介绍
2012/10/26 PHP
关于scrollLeft,scrollTop的浏览器兼容性测试
2013/03/19 Javascript
验证控件与Button的OnClientClick事件详细解析
2013/12/04 Javascript
javascript计算当月剩余天数(天数计算器)示例代码
2014/01/09 Javascript
javascript实现将文件保存到本地方法汇总
2015/07/26 Javascript
JQuery操作textarea,input,select,checkbox方法
2015/09/02 Javascript
Angularjs 自定义服务的三种方式(推荐)
2016/08/02 Javascript
JS解决移动web开发手机输入框弹出的问题
2017/03/31 Javascript
jQuery日期范围选择器附源码下载
2017/05/23 jQuery
详解angularjs 学习之 scope作用域
2018/01/15 Javascript
Vue 中axios配置实例详解
2018/07/27 Javascript
解决angular双向绑定无效果,ng-model不能正常显示的问题
2018/10/02 Javascript
微信小程序时间标签和时间范围的联动效果
2019/02/15 Javascript
Angular请求防抖处理第一次请求失效问题
2019/05/17 Javascript
vue指令做滚动加载和监听等
2019/05/26 Javascript
jquery实现Ajax请求的几种常见方式总结
2019/05/28 jQuery
微信小程序模板消息推送的两种实现方式
2019/08/27 Javascript
详细介绍解决vue和jsp结合的方法
2020/02/06 Javascript
react PropTypes校验传递的值操作示例
2020/04/28 Javascript
[53:49]LGD vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python脚本实现DNSPod DNS动态解析域名
2015/02/14 Python
浅谈Python程序与C++程序的联合使用
2015/04/07 Python
在pycharm中使用git版本管理以及同步github的方法
2019/01/16 Python
Python使用Pyqt5实现简易浏览器(最新版本测试过)
2020/04/27 Python
python矩阵运算,转置,逆运算,共轭矩阵实例
2020/05/11 Python
keras在构建LSTM模型时对变长序列的处理操作
2020/06/29 Python
Scrapy项目实战之爬取某社区用户详情
2020/09/17 Python
印度最大的网上花店:Ferns N Petals(鲜花、礼品和蛋糕)
2017/10/16 全球购物
英国折扣零售连锁店:QD Stores
2018/12/08 全球购物
英语简历自我评价
2014/01/26 职场文书
社会学专业求职信
2014/02/24 职场文书
见习期自我鉴定范文
2014/03/19 职场文书
党支部反对四风思想汇报
2014/10/10 职场文书
小学生六年级作文之关于感恩
2019/08/16 职场文书
Rhit高效可视化Nginx日志查看工具
2021/11/01 Servers
Python中文分词库jieba(结巴分词)详细使用介绍
2022/04/07 Python