phossa/phossa-config

PHP配置管理库

1.0.7 2016-06-10 00:51 UTC

This package is not auto-updated.

Last update: 2024-09-14 19:31:05 UTC


README

Build Status Latest Stable Version License

查看新的库phoole/config

简介

phossa-config 是一个PHP配置管理库。其设计理念受到了github项目 mrjgreen/config 的启发,但增加了许多酷炫的功能。

它需要PHP 5.4,并支持PHP 7.0+,HHVM。它遵循 PSR-1PSR-2PSR-4

特性

  • 所有配置文件集中存放

    config/
     |
     |____ production/
     |        |
     |        |____ host1/
     |        |       |___ redis.php
     |        |       |___ db.php
     |        |
     |        |____ db.php
     |
     |____ system.php
     |____ db.php
     |____ redis.php
    
  • 使用环境值,例如productionproduction/host1来在开发测试生产之间切换。

  • 支持.php.json.ini.xml类型的配置文件。

  • 可以在配置文件和环境文件中使用参考,例如配置文件中的${system.tmpdir}和环境文件中的${system.tmpdir}

  • 按需配置加载(延迟加载)。

  • 可以使用$config->get(null)一次性加载所有配置文件。

  • 配置缓存。

  • 具有点符号的层次配置结构,例如db.auth.host

    // returns an array
    $db_config = $config->get('db');
    
    // returns a string
    $db_host = $config->get('db.auth.host');
  • 完全支持扁平符号和数组符号,并可同时共存。

    // db config file
    return [
        // array notation
        'auth' => [
            'host' => 'localhost',
            'port' => 3306
        ],
    
        // flat notation
        'auth.user' => 'dbuser'
    ];
  • 支持Unix shell风格的环境文件'.env',具有解引用功能和类似${__DIR__}${__FILE__}的魔法环境值。

安装

通过composer工具安装。

composer require "phossa/phossa-config=1.*"

或者在您的composer.json中添加以下行

{
    "require": {
      "phossa/phossa-config": "1.*"
    }
}

用法

  • 运行环境

    通常运行环境因服务器而异。一个好的做法是在安装根目录下设置环境变量,并将所有配置文件放在config/目录中。

    示例.env文件:

    # debugging true|false, change to 'false' ON production server
    APP_DEBUG=true
    
    # App environment, change to 'prod' ON production server
    APP_ENV=dev
    
    # app root directory, default to current dir
    APP_ROOT=${__DIR__}
    
    # central configuration directory
    CONFIG_DIR=${APP_ROOT}/config

    bootstrap.php文件中:

    // load environment
    (new Phossa\Config\Env\Environment())->load(__DIR__.'/.env');
    
    // create config object
    $config = new Phossa\Config\Config(
        getenv('CONFIG_DIR'), // loaded from .env file
        getenv('APP_ENV')     // loaded from .env file
    );
    
    // load all configs in one shot
    $conf_data = $config->get(null);
  • 分组

    配置被分组到组中,即文件。例如,system.php包含了所有的system.*配置。

    // system.php
    return [
        'tmpdir' => '/usr/local/tmp',
        ...
    ];

    稍后,可以通过以下方式检索系统相关的配置:

    $dir = $config->get('system.tmpdir');

    或在其他配置中作为参考使用。

  • 缓存

    可以将缓存池传递给配置构造函数,以便它从缓存中读取所有配置或将所有配置保存到缓存中。

    // create config object
    $config = new Phossa\Config\Config(
        dirname(__DIR__) . '/config',     // the config dir
        'staging/server2',                // config env
        'php',                            // file type
        new Phossa\Config\Cache\Cache(__DIR__ . '/cache') // cache location
    );
    
    // if cache exists, this will read all configs from the cache
    $conf_data = $config->get(null);
    
    // ...
    
    // write to cache
    $config->save();
    • 使用缓存的优点

      • 加速。只从一个文件中读取,而不是从许多配置文件中读取。

      • 例如${system.tmpdir}这样的引用已经完成。

    • 使用缓存的缺点

      • 配置数据可能过时。需要使用$config->save()来覆盖或使用$cache->clear()来清除缓存。

      • 需要写入缓存目录的权限。

      • 如果不小心处理缓存数据,可能会暴露您的配置。

  • 引用

    引用使得配置管理变得容易。

    例如,在 system.php

    // group: system
    return [
        'tmpdir' => '/var/local/tmp',
        ...
    ];

    在你的 cache.php 文件中,

    // group: cache
    return [
        // a local filesystem cache driver
        'local' => [
            'driver' => 'filesystem',
            'params' => [
                'root_dir'   => '${system.tmpdir}/cache',
                'hash_level' => 2
            ]
        ],
        ...
    ];

    你可以重置引用的开始和结束字符,

    // now reference is something like '%system.tmpdir%'
    $config = (new Config())->setReferencePattern('%', '%');

    甚至禁用引用功能,

    // now reference is not recognised
    $config = (new Config())->setReferencePattern('', '');
  • 覆盖

    如果环境设置为 production/host1,则优先级顺序为,

    • config/production/host1/db.php 优先于

    • config/production/db.php 优先于

    • config/config/db.php

  • 配置 API

    • get($key, $default = null)

      $key 是一个平面表示法,如 db.auth.hostNULL 来获取所有配置。 $default 在找不到配置时使用。

      返回值可能是一个 stringarray,取决于 $key

    • set($key, $value)

      在此 会话 中手动设置配置。除非你手动修改配置文件,否则该值不会反映在任何配置文件中。

      $value 可以是一个 stringarray

    • has($key)

      测试 $key 是否存在。返回一个 boolean 值。

    • save()

      将当前完整配置保存到缓存中。

更改

  • 1.0.6 添加了 setReferencePattern()hasReference()deReference()

依赖

  • PHP >= 5.4.0

  • phossa/phossa-shared ~1.0.10

许可证

MIT 许可证