The Yaf_Config_Ini class

(Yaf >=1.0.0)

简介

Yaf_Config_Ini允许开发者通过嵌套的对象属性语法在应用程序中用熟悉的INI格式存储和读取配置数据。 INI格式在提供拥有配置数据键的等级结构和配置数据节之间的继承能力方面具有专长。 配置数据等级结构通过用点或者句号(.)分离键值。 一个节可以扩展或者通过在节的名称之后带一个冒号(:)和被继承的配置数据的节的名称来从另一个节继承。

Note:

Yaf_Config_Ini利用PHP的函数parse_ini_file()来解析配置文件的。 请仔细查看这个函数的文档,注意它的一些特殊用途。以及它传递给Yaf_Config_Ini的一些比如 "TRUE", "FALSE","yes", "no", 和"NULL"的特殊值的处理方式

类摘要

Yaf_Config_Ini extends Yaf_Config_Abstract implements Iterator , Traversable , ArrayAccess , Countable {
/* 属性 */
/* 方法 */
public __construct ( string $config_file , string $section = ? )
public count ( ) : void
public current ( ) : void
public __get ( string $name = ? ) : void
public __isset ( string $name ) : void
public key ( ) : void
public next ( ) : void
public offsetExists ( string $name ) : void
public offsetGet ( string $name ) : void
public offsetSet ( string $name , string $value ) : void
public offsetUnset ( string $name ) : void
public readonly ( ) : void
public rewind ( ) : void
public __set ( string $name , mixed $value ) : void
public toArray ( ) : void
public valid ( ) : void
/* 继承的方法 */
abstract public Yaf_Config_Abstract::get ( string $name , mixed $value ) : mixed
abstract public Yaf_Config_Abstract::readonly ( ) : bool
abstract public Yaf_Config_Abstract::toArray ( ) : array
}

属性

_config

_readonly

范例

Example #1 Yaf_Config_Ini()example

这个例子说明了使用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

Table of Contents

User Contributed Notes

zzxiaoman at gmail dot com 04-Mar-2015 03:17
when i use Yaf_Config_ini with these lines:

type.18.text=abc
type.8.text=ddf
type.0.text=fjdsklf

You can through this way

$$configArr = $config->toArray();
var_dump($configArr['type'][18]['text']);

result:
abc
Mark 03-Jan-2015 08:59
/conf/db.ini

[product]
database.params.host           = localhost
database.params.port           = 5432
database.params.dbname    = postgres
database.params.username = 'postgres'
database.params.password  = 123456

<?php
       $config 
= new Yaf_Config_ini('../conf/db.ini','product');
       
$config = $config->toArray();
       
$host       =   $config['database']['params']['host'];
       
$port       =   $config['database']['params']['port'];
       
$database   =   $config['database']['params']['dbname'];
       
$username        =   $config['database']['params'['username'];       
       
$password   =   $config['database']['params']['password'];
       
$pg_conn = pg_connect("host='$host' port='$port' dbname='$database'  user='$username' password='$password' ");
?>
lee dot howarth dot 90 at gmail dot com 02-May-2014 09:59
@flowithwind

var_dump($config -> toArray()[ 'type' ][ 18 ][ 'text' ]);

string 'abc' (length=3)