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 和 XML: 使用expat函数(三)
Oct 09 PHP
在任意字符集下正常显示网页的方法一
Apr 01 PHP
用PHP的ob_start() 控制您的浏览器cache
Aug 03 PHP
PHP开发规范手册之PHP代码规范详解
Jan 13 PHP
windows下zendframework项目环境搭建(通过命令行配置)
Dec 06 PHP
PHP中array_merge和array相加的区别分析
Jun 17 PHP
php实现四舍五入的方法小结
Mar 03 PHP
PHP变量赋值、代入给JavaScript中的变量
Jun 29 PHP
使用WordPress发送电子邮件的相关PHP函数用法解析
Dec 15 PHP
php将文件夹打包成zip文件的简单实现方法
Oct 04 PHP
php curl上传、下载、https登陆实现代码
Jul 23 PHP
Laravel 实现关系模型取出需要的字段
Oct 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
php下把数组保存为文件格式的实例应用
2010/02/08 PHP
php 上传文件类型判断函数(避免上传漏洞 )
2010/06/08 PHP
PHP实现冒泡排序的简单实例
2016/05/26 PHP
分享一个漂亮的php验证码类
2016/09/29 PHP
理解Javascript_08_函数对象
2010/10/15 Javascript
使用jquery制作弹出框效果
2015/04/03 Javascript
jQuery插件 Jqplot图表实例
2016/06/18 Javascript
使用json来定义函数,在里面可以定义多个函数的实现方法
2016/10/28 Javascript
ionic中列表项增加和删除的实现方法
2017/01/22 Javascript
vue组件中点击按钮后修改输入框的状态实例代码
2017/04/14 Javascript
bootstrap的常用组件和栅格式布局详解
2017/05/02 Javascript
使用JavaScript根据图片获取条形码的方法
2017/07/04 Javascript
React Native 环境搭建的教程
2017/08/19 Javascript
Vue刷新修改页面中数据的方法
2018/09/16 Javascript
微信小程序中的店铺评分组件及vue中用svg实现的评分显示组件
2018/11/16 Javascript
微信小程序下拉刷新PullDownRefresh的使用方法
2018/11/29 Javascript
JavaScript简单实现动态改变HTML内容的方法示例
2018/12/25 Javascript
微信小程序实现打开并下载服务器上面的pdf文件到手机
2019/09/20 Javascript
webpack的pitching loader详解
2019/09/23 Javascript
vue-cli或vue项目利用HBuilder打包成移动端app操作
2020/07/29 Javascript
[51:36]EG vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
Python读取txt文件数据的方法(用于接口自动化参数化数据)
2018/06/27 Python
Python 从一个文件中调用另一个文件的类方法
2019/01/10 Python
python发送多人邮件没有展示收件人问题的解决方法
2019/06/21 Python
如何通过python的fabric包完成代码上传部署
2019/07/29 Python
利用matplotlib实现根据实时数据动态更新图形
2019/12/13 Python
python实现程序重启和系统重启方式
2020/04/16 Python
html5 video全屏播放/自动播放的实现示例
2020/08/06 HTML / CSS
巴西葡萄酒销售网站:Wine.com.br
2017/11/07 全球购物
《二泉映月》教学反思
2014/04/15 职场文书
人民调解员培训方案
2014/06/05 职场文书
铣床操作工岗位职责
2014/06/13 职场文书
乡镇保密工作责任书
2014/07/28 职场文书
个人合伙协议书范本
2014/10/14 职场文书
民事调解书范文
2015/05/20 职场文书
MySQL三种方式实现递归查询
2022/04/18 MySQL