Контейнер PHP постоянных конфигураций
Yaconf - это конфигурационный контейнер, он анализирует файлы INI, сохраняет результат в PHP. Когда PHP запускается, конфигурации живут во всем жизненном цикле PHP, что делает его очень быстрым.
Yaconf - это расширение PECL, поэтому вы можете просто установить его:
$pecl install yaconf
Или вы можете скомпилировать это самостоятельно:
$ /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 )Предполагая, что мы размещаем все файлы конфигураций в/tmp/yaconf/, таким образом, мы добавили это в php.ini
yaconf.directory=/tmp/yaconf
Предполагая, что в /tmp /yaconf есть два файла /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 variablesи bar.ini
[base]
parent = " yaconf "
children = " NULL "
[children:base] ; inherit from section "base"
children = " set " Позвольте получить конфигурации из 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"
}
}
* /Как вы можете видеть, Yaconf поддерживает строку, карту (массив), INI, ENV Variate и константы PHP.
Вы также можете получить доступ к конфигурациям, как это:
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"Теперь давайте посмотрим на наследство разделов и разделов:
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"
}
}
* /Детская секция унаследовала значения в базовых разделах, и дети могут переопределить нуждающиеся им ценности.