array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'zh', ), 'this' => array ( 0 => 'class.yaf-config-ini.php', 1 => 'Yaf_Config_Ini', ), 'up' => array ( 0 => 'book.yaf.php', 1 => 'Yaf', ), 'prev' => array ( 0 => 'yaf-config-abstract.toarray.php', 1 => 'Yaf_Config_Abstract::toArray', ), 'next' => array ( 0 => 'yaf-config-ini.construct.php', 1 => 'Yaf_Config_Ini::__construct', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'zh', 'path' => 'reference/yaf/yaf-config-ini.xml', ), 'extra_header_links' => array ( 'rel' => 'alternate', 'href' => '/manual/en/feeds/class.yaf-config-ini.atom', 'type' => 'application/atom+xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(Yaf >=1.0.0)
Yaf_Config_Ini 允许开发者通过嵌套的对象属性语法在应用程序中用熟悉的INI格式存储和读取配置数据。 INI格式在提供拥有配置数据键的等级结构和配置数据节之间的继承能力方面具有专长。 配置数据等级结构通过用点或者句号(“.”)分离键值。 一个节可以扩展或者通过在节的名称之后带一个冒号(“:”)和被继承的配置数据的节的名称来从另一个节继承。
注意:
Yaf_Config_Ini 利用 PHP 的函数 parse_ini_file() 来解析配置文件的。 请仔细查看这个函数的文档,注意它的一些特殊用途。以及它传递给 Yaf_Config_Ini 的一些比如 “
true
”、“false
”、“yes”、“no”和“null
”的特殊值的处理方式。
示例 #1 Yaf_Config_Ini() 示例
这个例子说明了使用 Yaf_Config_Ini 从一个 INI 配置文件中获取配置数据的基本用法。 这个例子中既有生产环境的配置方法也有演示环境的配置方法。 因为演示环境的配置跟生产环境的非常类似,所以演示环境的配置继承了生产环境的配置。 在复杂的情况下,决定是任意的,也可以写成相反的。在更复杂的情况下,生产环境继承自演示环境不是不可能的。 假设,以下配置数据都包含在 /path/to/config.ini 中:
; Production site configuration data [production] webhost = www.example.com database.adapter = pdo_mysql database.params.host = db.example.com database.params.username = dbuser database.params.password = secret database.params.dbname = dbname ; Staging site configuration data inherits from production and ; overrides values as necessary [staging : production] database.params.host = dev.example.com database.params.username = devuser database.params.password = devsecret
<?php
$config = new Yaf_Config_Ini('/path/to/config.ini', 'staging');
var_dump($config->database->params->host);
var_dump($config->database->params->dbname);
var_dump($config->get("database.params.username"));
?>
以上示例的输出类似于:
string(15) "dev.example.com" string(6) "dbname" string(7) "devuser