theiconic/config

基于文件的配置处理程序

v1.0.5 2018-04-13 15:35 UTC

This package is auto-updated.

Last update: 2024-09-12 03:05:16 UTC


README

通用文件配置管理器。

Build Status Coverage Status Scrutinizer Code Quality Latest Stable Version Total Downloads License Dependency Status

设置

composer require theiconic/config

概念

空间

配置被分组到配置空间中。空间由配置工厂管理。

多文件和多部分配置

配置空间可以读取多个文件中的配置。配置将按部分合并并扁平化。

占位符

在解析过程中,预定义的占位符将被配置的替换值替换。

示例

所以基本设置看起来像这样(基于alice修改的示例)

// get the factory instance
$factory = Factory::getInstance();

// set the current environment
$factory->setEnvironment(APPLICATION_ENV);

// configure cache path
$factory->setCachePath(sprintf('%s/config', APPLICATION_TMP));

// instanciate and configure the application config space
$factory->getSpace('application')
    ->setPaths([
        '/etc/iconic.ini',
        $basePath . 'application.ini',
        $basePath . 'application.local.ini',
    ])
    ->setSections([
        'default',
        'production',
    ])
    ->setPlaceholders([
        '%APPLICATION_ENV%' => APPLICATION_ENV,
        '%APPLICATION_ROOT%' => APPLICATION_ROOT,
        '%APPLICATION_TMP%' => APPLICATION_TMP,
    ]);

多部分配置格式

配置文件必须包含配置部分。这是.ini文件中的部分,以及.php或.json配置文件的第一级数组/对象项。

默认情况下没有预选择部分。您需要在代码中明确声明部分,如下所示

$factory->getSpace('myConfig')
    ->setSections(['main', 'development', 'testing']);

部分将按指定顺序合并,即较晚部分中的条目将覆盖较早部分中的条目。

缓存

所有配置都解析为多维PHP数组。然后这些数组存储在缓存文件中,以便绕过昂贵的解析。

缓存键基于以下内容确定

  • 源文件名列表
  • 部分名列表。

缓存根据文件修改时间戳自动验证。因此,当任何源配置文件更改时,缓存将自动更新。

解析

使用可扩展的解析器解析不同的文件格式。目前实现的解析器有

  • Ini(用于.ini文件)
  • Json(用于.json文件)
  • Php(用于.php文件)
  • Autodetect(根据扩展自动选择正确的解析器)
  • Dummy(用于单元测试等。)

访问配置值

可以通过点路径访问配置。这些路径与配置的内部数组表示动态解析。这允许检索单个条目以及条目集合。

Factory::getInstance()->getSpace('application')->get('redis.retries', 3);
Factory::getInstance()->getSpace('application')->get('redis.hosts', 'localhost');
 
Factory::getInstance()->getSpace('application')->get('redis', ['retries': 3, 'hosts': 'localhost]);

您还可以检索配置为点路径到值的扁平数组映射

Factory::getInstance()->getSpace('application')->flatten();

使用环境变量

没有显式处理环境变量的功能,但是可以通过占位符机制动态在配置中使用它们

$space = Factory::getInstance()->getSpace('application');
foreach ($_ENV as $key => $value) {
    $placeholder = sprintf('%%ENV_%s%%', strtoupper(str_replace('%', '_', $key)));
    $space->addPlaceholder($placeholder, $value);
}

放置这些几行,配置文件可能看起来像这样

[main]
user.name = %ENV_USER%
user.home = %ENV_HOME%

许可证

THE ICONIC的PHP配置库在MIT许可证下发布。