这个是鸟哥开发的一个管理配置文件的php插件

地址:​​http://www.laruence.com/2015/06/12/3051.html​

介绍,直接哪来点用吧,反正自己体会就好了

项目地址
代码已经提交到了Github: https://github.com/laruence/yaconf , 欢迎大家提交Issue

简介
首先说说, 这个是干啥的.

1. 我见过很多的项目中, 用PHP文件做配置的, 一个config目录下可能有十几个甚至数十个.php配置文件, 里面都是各种各样的array, 还有甚者会把一些词典文件(比如中文/英文对照)也放到配置中去. 这就导致配置文件的解析耗费了很大的性能(诚然, 用了opcache能好点, 但是实际上还是有执行的过程).

2. 除了PHP的, 还有用json的, yaml的, 一个共同的特点就是这些配置的可读性比较差. 另外, 他们也都要runtime解析.

3. config目录往往和代码在一起, 首先会有安全隐患(配置中往往有敏感信息), 其次如果配置和代码属于一个项目, 这就会导致配置的修改也要走代码上线的流程.

4. 一些资源配置文件, 比如mysql/memcache的配置信息, 这些内容本来是应该对开发透明的, 运维直接负责即可. 但是放到了代码中就会导致, 运维如果要发起一些变更, 也要开发配合修改配置文件上线.

所以, Yaconf就是为了解决这些问题而生的一个工具.

1. 它使用单独的一个配置目录(在yaconf.directory指定), 不和代码在一起.

2. 它在PHP启动的时候, 处理所有的要处理的配置, 然后这些配置就会常驻内存, 随着PHP的生命周期存亡. 避免了每次请求的时候解析配置文件.

3. 所有的配置内容都是immutable的, 这就可以借助于Fork的COW, 降低内存占用, 并且在访问配置的时候, 几乎不需要任何的内存Copy, 也不会有无谓的引用计数增减

4. 最重要的, 配置目录和代码分离以后, 可以借助一个配置管理后台, 来实现配置的统一化管理.

5. 它支持(对于非ZTS)配置变更重新加载, 也就是说配置如果有变化(建议更改配置一定使用mv, 不要使用cp), 它会reload, 不需要重启(检测的频率由yaconf.check_delay控制).

6. 它支持丰富的配置类型, 包括字符串, 数组, 分节, 分节继承, 并且还可以在配置中直接写PHP的常量和环境变量等.

7. 最重要的是, 它很简单.

我就说下安装过程吧:

好吧,人家说的挺清楚的,推荐使用

安装
在Linux中编译Yaconf
Yaconf是PECL扩展,因此您可以通过以下方式简单地安装它:

$pecl install yaconf
或者您可以自己编译:

$ /path/to/php7/bin/phpize
$ ./configure --with-php-config=/path/to/php7/bin/php-config
$ make && make install
运行时配置
yaconf.directory
Path to directory which all ini configuration files are placed in
yaconf.check_delay
In which interval Yaconf will detect ini file's change(by directory's mtime),
if it is set to zero, you have to restart php to reloading configurations.
蜜蜂
混合Yaconf :: get(字符串$ name,mixed $ default = NULL)
bool Yaconf :: has(string $ name)

目录
假设我们将所有配置文件放在/ tmp / yaconf /中,因此我们将其添加到php.ini中

yaconf.directory=/tmp/yaconf
INI文件
假设/ tmp / yaconf中有两个文件

foo.ini

name = “ yaconf ”
year = 2015
features [] = “ fast ”
features.1 = “ light ”
features.plus = “ zero-copy ”
features.constant = PHP_VERSION
features.env = $ {HOME}
和bar.ini

[base]
parent = “ yaconf ”
children = “ NULL ”

[孩子:基地]
孩子 = “集”

让我们访问配置

foo.ini
PHP7 - [R '的var_dump(Yaconf ::获得( “富”)); '
/ *
array(3){
[“name”] =>
string(6)“yaconf”
[“year”] =>
string(4)“2015”
[“features”] =>
array(5){
[0 ] =>
string(4)“fast”
[1] =>
string(5)“light”
[“plus”] =>
string(9)“zero-copy”
[“constant”] =>
string(9)“ 7.0.0-dev“
[”env“] =>
string(16)”/ home / huixinchen“
}
}
* /
如您所见,Yaconf支持字符串,映射(数组),ini,env变量和PHP常量。

您还可以访问以下配置:

PHP7 - [R '的var_dump(Yaconf ::获得( “foo.name”)); '
// string(6)“yaconf”

PHP7 - [R '的var_dump(Yaconf ::获得( “foo.features.1”)); '
// string(5)“light”

PHP7 - [R '的var_dump(Yaconf ::获得( “foo.features”) “加”]); '
// string(9)“零拷贝”
bar.ini
现在让我们看看继承的部分和部分:

PHP7 - [R '的var_dump(Yaconf ::获得( “酒吧”)); '
/ *
array(2){
[“base”] =>
array(2){
[“parent”] =>
string(6)“yaconf”
[“children”] =>
string(4)“NULL”
}
[ “children”] =>
array(2){
[“parent”] =>
string(6)“yaconf”
[“children”] =>
string(3)“set”
}
}
* /
子部分在基本部分中继承了值,子部分能够覆盖他们想要的值。