yaconf, PHP持久配置容器

分享于 

4分钟阅读

GitHub

  繁體 雙語
A PHP Persistent Configures Container
  • 源代码名称:yaconf
  • 源代码网址:http://www.github.com/laruence/yaconf
  • yaconf源代码文档
  • yaconf源代码下载
  • Git URL:
    git://www.github.com/laruence/yaconf.git
    Git Clone代码到本地:
    git clone http://www.github.com/laruence/yaconf
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/laruence/yaconf
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    Yaconf --另一个配置容器

    Build Status

    PHP持久配置容器

    需求

    • PHP 7 +

    简介

    Yaconf是配置容器,它解析ini文件,并在PHP启动时将结果存储在PHP中。

    特性

    • 快,轻
    • 访问配置时的零副本
    • 支持节,节继承
    • 更改后自动重新加载配置

    安装

    在Linux中编译 Yaconf

    Yaconf是一个PECL扩展,因此你可以简单地安装它:

    
    $pecl install yaconf
    
    
    
    

    或者你可以自己编译它:

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

    运行时配置

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

    命令行 api

    ( 字符串 $name) ): 混合 Yaconf::get(string $name, mixed $default = NULL) bool yaconf::

    示例

    目录

    假设我们将所有配置文件放在/tmp/yaconf/, 中,那么我们将它的添加到 php.ini 中

    
    yaconf.directory=/tmp/yaconf
    
    
    
    
    INI文件

    假设/tmp/yaconf 中有两个文件

    foo.ini

    name="yaconf"year=2015
    features[]="fast"features.1="light"features.plus="zero-copy"features.constant=PHP_VERSIONfeatures.env=${HOME}

    还有 bar.ini

    [base]parent="yaconf"children="NULL"[children:base]children="set"
    运行

    让我们访问配置

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

    如你所见,Yaconf支持字符串。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"
    bar.ini

    现在让我们看看节和节的继承:

    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节在基节中继承了值,子节可以重写它们想要的值。


    相关文章