Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

A PHP Persistent Configurations Container

License

NotificationsYou must be signed in to change notification settings

laruence/yaconf

Repository files navigation

Build statusBuild Status

A PHP Persistent Configurations Container

Requirement

  • PHP 7+

Introduction

Yaconf is a configurations container, it parses ini files, store the result in PHP when PHP is started, configurations live in the whole PHP lifecycle, which makes it very fast.

Features

  • Fast, Light
  • Zero-copy while accesses configurations
  • Support sections, sections inheritance
  • Configurations reload automatically after changed

Install

Compile Yaconf in Linux

Yaconf is an PECL extension, thus you can simply install it by:

$pecl install yaconf

Or you can compile it by your self:

$ /path/to/php7/bin/phpize$ ./configure --with-php-config=/path/to/php7/bin/php-config$ make && make install

Runtime configuration

  • 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.

APIs

mixed Yaconf::get(string$name, mixed$default =NULL)bool  Yaconf::has(string$name)

Example

Directory

Assuming we place all configurations files in /tmp/yaconf/, thus we added this into php.ini

yaconf.directory=/tmp/yaconf

INI Files

Assuming there are two files in /tmp/yaconf

foo.ini

name="yaconf";stringyear=2015;numberfeatures[]="fast";mapfeatures.1="light"features.plus="zero-copy"features.constant=PHP_VERSION;PHP constantsfeatures.env=${HOME};Enviorment variables

and bar.ini

[base]parent="yaconf"children="NULL"[children:base];inherit from section "base"children="set"

Run

lets retrieve the configurations from Yaconf

foo.ini
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"  }}*/

As you can see, Yaconf supports string, map(array), ini, env variable and PHP constants.

You can also access configurations like this:

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"
bar.ini

Now let's see the sections and sections inheritance:

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 has inherited values in base sections, and children is able to override the values they want.

About

A PHP Persistent Configurations Container

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages


[8]ページ先頭

©2009-2025 Movatter.jp