INI ”就是英文 “initialization”的头三个字母的缩写;当然INI file的后缀名也不一定是".ini"也可以是".cfg",".conf ”或者是".txt"
。
经典格式如下:
INI文件的格式很简单,最基本的三个要素是:parameters,sections和comments。
什么是parameters?
INI所包含的最基本的“元素”就是parameter;每一个parameter都有一个name和一个value,如下所示:
name = value
什么是sections ?
所有的parameters都是以sections为单位结合在一起的。所有的section名称都是独占一行,并且sections名字都被方括号包围着([ and ])。在section声明后的所有parameters都是属于该section。对于一个section没有明显的结束标志符,一个section的开始就是上一个section的结束,或者是end of the file。Sections一般情况下不能被nested,当然特殊情况下也可以实现sections的嵌套。
section如下所示:
[section]
什么是comments ?
在INI文件中注释语句是以分号“;”开始的。所有的所有的注释语句不管多长都是独占一行直到结束的。在分号和行结束符之间的所有内容都是被忽略的。
注释实例如下:
;comments text
当然,上面讲的都是最经典的INI文件格式,随着使用的需求INI文件的格式也出现了很多变种;
INI实例1:
test.ini
; 通用配置,文件后缀.ini
[common]
application.directory = APPLICATION_PATH "/application"
application.dispatcher.catchException = TRUE
; 数据库配置
resources.database.master.driver = "pdo_mysql"
resources.database.master.hostname = "127.0.0.1"
resources.database.master.port = 3306
resources.database.master.database = "database"
resources.database.master.username = "username"
resources.database.master.password = "password"
resources.database.master.charset = "UTF8"
; 生产环境配置
[product : common]
; 开发环境配置
[develop : common]
resources.database.slave.driver = "pdo_mysql"
resources.database.slave.hostname = "127.0.0.1"
resources.database.slave.port = 3306
resources.database.slave.database = "test"
resources.database.slave.username = "root"
resources.database.slave.password = "123456"
resources.database.slave.charset = "UTF8"
; 测试环境配置
[test : common]
读取文件:
<?php
$config=parse_ini_file('./test.ini');
print_r($config);
测试打印:
$ php -f test.php
Array
(
[application.directory] => APPLICATION_PATH/application
[application.dispatcher.catchException] => 1
[resources.database.master.driver] => pdo_mysql
[resources.database.master.hostname] => 127.0.0.1
[resources.database.master.port] => 3306
[resources.database.master.database] => database
[resources.database.master.username] => username
[resources.database.master.password] => password
[resources.database.master.charset] => UTF8
[resources.database.slave.driver] => pdo_mysql
[resources.database.slave.hostname] => 127.0.0.1
[resources.database.slave.port] => 3306
[resources.database.slave.database] => test
[resources.database.slave.username] => root
[resources.database.slave.password] => 123456
[resources.database.slave.charset] => UTF8
)
INI实例2,多维数组:
env.conf
;应用程序配置
[application]
env=develop
[dblist]
dbtype[]=test
dbtype[]=dev
dbtype[]=v1
dbtype[]=release
dbtype[]=online
读取示例:
<?php
//第二个参数设置为true,读取多维数组
$config=parse_ini_file('./env.conf',TRUE);
print_r($config);
测试打印:
$ php -f test.php
Array
(
[application] => Array
(
[env] => develop
)
[dblist] => Array
(
[dbtype] => Array
(
[0] => test
[1] => dev
[2] => v1
[3] => release
[4] => online
)
)
)