yaconf
1.0.0
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に2つのファイルがあると仮定します
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はString、Map(Array)、INI、ENV変数、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"
}
}
* /Children Sectionは基本セクションに値を継承しており、子供は必要な値を無効にすることができます。