• Zend Framework配置文件之Zend_Config_Xml
  • 瓦缸没米 发表于 2014/12/10 21:51:00 | 分类标签: zend 配置文件 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中:

    1. <?xml version="1.0"?>  
    2. <configdata>  
    3.     <production>  
    4.         <webhost>www.example.com</webhost>  
    5.         <database>  
    6.             <adapter>pdo_mysql</adapter>  
    7.             <params>  
    8.                 <host>db.example.com</host>  
    9.                 <username>dbuser</username>  
    10.                 <password>secret</password>  
    11.                 <dbname>dbname</dbname>  
    12.             </params>              
    13.         </database>  
    14.     </production>  
    15.     <staging extends="production">  
    16.         <database>  
    17.             <params>  
    18.                 <host>dev.example.com</host>  
    19.                 <username>devuser</username>  
    20.                 <password>devsecret</password>  
    21.             </params>              
    22.         </database>  
    23.     </staging>  
    24. </configdata>  

    接着,假定开发者需要从XML文件取开发配置数据。这非常简单,只要指定XML文件和开发系统节就可以加载这些数据了:

    1. $config = new Zend_Config_Xml('/path/to/config.xml', 'staging');  
    2. echo $config->database->params->host;   // 输出 "dev.example.com"  
    3. echo $config->database->params->dbname; // 输出 "dbname"  

    在 Zend_Config_Xml 使用标签(tag)属性

    Zend_Config_Xml 也支持另外两种方法在配置文件里定义节点。它们都利用属性。 因为 extends 和 value 属性是保留关键字(后者是第二种使用属性的方法),它们可能不被使用。 第一种方法使用属性是把属性添加到父节点,它本身就变成了子节点:

    1. <?xml version="1.0"?>  
    2. <configdata>  
    3.     <production webhost="www.example.com">  
    4.         <database adapter="pdo_mysql">  
    5.             <params host="db.example.com" username="dbuser" password="secret" dbname="dbname"/>  
    6.         </database>  
    7.     </production>  
    8.     <staging extends="production">  
    9.         <database>  
    10.             <params host="dev.example.com" username="devuser" password="devsecret"/>  
    11.         </database>  
    12.     </staging>  
    13. </configdata>  

    另一种方法也不会使配置文件变小,但使维护变得容易,是因为你需要要写标签名两次。你可以创建一个空标签,它在 value 属性里包含它的值:

    1. <?xml version="1.0"?>  
    2. <configdata>  
    3.     <production>  
    4.         <webhost>www.example.com</webhost>  
    5.         <database>  
    6.             <adapter value="pdo_mysql"/>  
    7.             <params>  
    8.                 <host value="db.example.com"/>  
    9.                 <username value="dbuser"/>  
    10.                 <password value="secret"/>  
    11.                 <dbname value="dbname"/>  
    12.             </params>  
    13.         </database>  
    14.     </production>  
    15.     <staging extends="production">  
    16.         <database>  
    17.             <params>  
    18.                 <host value="dev.example.com"/>  
    19.                 <username value="devuser"/>  
    20.                 <password value="devsecret"/>  
    21.             </params>  
    22.         </database>  
    23.     </staging>  
    24. </configdata>  

     

  • 请您注意

    ·自觉遵守:爱国、守法、自律、真实、文明的原则

    ·尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法规

    ·严禁发表危害国家安全,破坏民族团结、国家宗教政策和社会稳定,含侮辱、诽谤、教唆、淫秽等内容的作品

    ·承担一切因您的行为而直接或间接导致的民事或刑事法律责任

    ·您在编程中国社区新闻评论发表的作品,本网站有权在网站内保留、转载、引用或者删除

    ·参与本评论即表明您已经阅读并接受上述条款

  • 感谢本文作者
  • 作者头像
  • 昵称:瓦缸没米
  • 加入时间:2013/6/13 0:00:00
  • TA的签名
  • 这家伙很懒,虾米都没写
  • +进入TA的空间
  • 以下内容也很赞哦
分享按钮