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错误信息方法的详解
Jun 09 PHP
ThinkPHP实现跨模块调用操作方法概述
Jun 20 PHP
CMS中PHP判断系统是否已经安装的方法示例
Jul 26 PHP
PHP与MYSQL中UTF8 中文排序示例代码
Oct 23 PHP
PHP中文乱码解决方案
Mar 05 PHP
PHP魔术方法的使用示例
Jun 23 PHP
PHP实现的QQ空间g_tk加密算法
Jul 09 PHP
Zend Framework教程之Application用法实例详解
Mar 14 PHP
php接口技术实例详解
Dec 07 PHP
微信开发之php表单微信中自动提交两次问题解决办法
Jan 08 PHP
解决Yii2邮件发送结果返回成功,但接收不到邮件的问题
May 23 PHP
PHP基于socket实现客户端和服务端通讯功能
Jul 13 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+mysqli使用面向对象方式查询数据库实例
2015/01/29 PHP
php自定义urlencode,urldecode函数实例
2015/03/24 PHP
php实现支持中文的文件下载功能示例
2017/08/30 PHP
PHP实现简易计算器功能
2020/08/28 PHP
Lazy Load 延迟加载图片的jQuery插件中文使用文档
2012/10/18 Javascript
js时间日期和毫秒的相互转换
2013/02/22 Javascript
JavaScript对数字的判断与处理实例分析
2015/02/02 Javascript
javascript解决IE6下hover问题的方法
2015/07/28 Javascript
JavaScript实现文字跟随鼠标特效
2015/08/06 Javascript
详解Webwork中Action 调用的方法
2016/02/02 Javascript
JS原型对象的创建方法详解
2016/06/16 Javascript
BootStrap实现响应式布局导航栏折叠隐藏效果(在小屏幕、手机屏幕浏览时自动折叠隐藏)
2016/11/30 Javascript
JavaScript中附件预览功能实现详解(推荐)
2017/08/15 Javascript
在vscode中统一vue编码风格的方法
2018/02/22 Javascript
Vue.js实现图片的随意拖动方法
2018/03/08 Javascript
vue页面切换过渡transition效果
2018/10/08 Javascript
js中int和string数据类型互相转化实例
2019/01/16 Javascript
qrcode生成二维码微信长按无法识别问题的解决
2019/04/04 Javascript
sharp.js安装过程中遇到的问题总结
2020/04/02 Javascript
纯JS实现五子棋游戏
2020/05/28 Javascript
[51:15]2014 DOTA2国际邀请赛中国区预选赛 Orenda VS LGD-GAMING
2014/05/22 DOTA
python BeautifulSoup使用方法详解
2013/11/21 Python
Python实现windows下模拟按键和鼠标点击的方法
2015/03/13 Python
Python如何快速实现分布式任务
2017/07/06 Python
python Web开发你要理解的WSGI &amp; uwsgi详解
2018/08/01 Python
Python3实现对列表按元组指定列进行排序的方法分析
2018/12/22 Python
opencv实现静态手势识别 opencv实现剪刀石头布游戏
2019/01/22 Python
3行Python代码实现图像照片抠图和换底色的方法
2019/10/10 Python
Pycharm中使用git进行合作开发的教程详解
2020/11/17 Python
Ryderwear澳洲官网:澳大利亚高端健身训练装备品牌
2018/09/18 全球购物
Linux内核的同步机制是什么?主要有哪几种内核锁
2016/07/11 面试题
董事长助理岗位职责
2014/02/18 职场文书
软件研发工程师岗位职责
2014/09/30 职场文书
工程安全生产协议书
2014/11/21 职场文书
Springboot使用Spring Data JPA实现数据库操作
2021/06/30 Java/Android
tree shaking对打包体积优化及作用
2022/07/07 Java/Android