Un conteneur de configurations persistantes PHP
Yaconf est un conteneur de configurations, il analyse les fichiers INI, stockent le résultat en PHP lorsque PHP est démarré, les configurations vivent dans tout le cycle de vie PHP, ce qui le rend très rapide.
Yaconf est une extension PECL, vous pouvez donc simplement l'installer par:
$pecl install yaconf
Ou vous pouvez le compiler par vous-même:
$ /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 )En supposant que nous placons tous les fichiers de configurations dans / tmp / yaconf /, nous avons donc ajouté cela dans php.ini
yaconf.directory=/tmp/yaconf
En supposant qu'il y a deux fichiers dans / 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 variableset bar.ini
[base]
parent = " yaconf "
children = " NULL "
[children:base] ; inherit from section "base"
children = " set " Permet de récupérer les configurations 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"
}
}
* /Comme vous pouvez le voir, Yaconf prend en charge la chaîne, la carte (array), les constantes ini, les variables Env et les constantes PHP.
Vous pouvez également accéder à des configurations comme celle-ci:
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"Voyons maintenant les sections et les sections héritées:
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"
}
}
* /La section des enfants a des valeurs héritées dans les sections de base et les enfants sont en mesure de remplacer les valeurs qu'ils souhaitent.