Um contêiner de configurações persistentes do PHP
O Yaconf é um contêiner de configurações, analisa os arquivos INI, armazenam o resultado no PHP quando o PHP é iniciado, as configurações vivem em todo o ciclo de vida do PHP, o que o torna muito rápido.
Yaconf é uma extensão PECL, portanto você pode simplesmente instalá -lo por:
$pecl install yaconf
Ou você pode compilá -lo por si mesmo:
$ /path/to/php7/bin/phpize
$ ./configure --with-php-config=/path/to/php7/bin/php-config
$ make && make install
Path to directory which all ini configuration files are placed in
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.
mixed Yaconf:: get (string $ name , mixed $ default = NULL )
bool Yaconf:: has (string $ name )Supondo que coloquemos todos os arquivos de configurações em/tmp/yaconf/, assim adicionamos isso ao Php.ini
yaconf.directory=/tmp/yaconf
Supondo que haja dois arquivos em /tmp /yaconf
foo.ini
name = " yaconf " ; string
year =2015 ; number
features[]= " fast " ; map
features.1 = " light "
features.plus = " zero-copy "
features.constant =PHP_VERSION ; PHP constants
features.env =${HOME} ; Enviorment variablese bar.ini
[base]
parent = " yaconf "
children = " NULL "
[children:base] ; inherit from section "base"
children = " set " Vamos recuperar as configurações de Yaconf
php7 -r ' var_dump(Yaconf::get("foo")); '
/ *
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"
}
}
* /Como você pode ver, o Yaconf suporta String, Map (Array), Ini, ENV Variable e PHP Constants.
Você também pode acessar configurações como esta:
php7 -r ' var_dump (Yaconf:: get ( " foo.name " )); '
//string(6) "yaconf"
php7 -r ' var_dump (Yaconf:: get ( " foo.features.1 " )); '
//string(5) "light"
php7 -r ' var_dump (Yaconf:: get ( " foo.features " )[ " plus " ]);'
//string(9) "zero-copy"Agora vamos ver as seções e seções da herança:
php7 -r ' var_dump(Yaconf::get("bar")); '
/ *
array ( 2 ) {
[ "base" ] = >
array ( 2 ) {
[ "parent" ] = >
string ( 6 ) "yaconf"
[ "children" ] = >
string ( 4 ) "NULL"
}
[ "children" ] = >
array ( 2 ) {
[ "parent" ] = >
string ( 6 ) "yaconf"
[ "children" ] = >
string ( 3 ) "set"
}
}
* /A seção infantil herdou valores nas seções base e as crianças são capazes de substituir os valores que desejam.