abreksa4/mini-config

该软件包已被 废弃 并不再维护。未建议替代软件包。

迷你配置库

0.2 2015-11-12 01:25 UTC

This package is not auto-updated.

Last update: 2022-02-01 12:52:44 UTC


README

mini-config 接收文件和目录列表,并成为包含解析配置数据的 ArrayAccess 对象。

目前默认支持 JSON*、INI、PHP 数组以及 XML**。

*JSON 必须遵循以下格式,尽管您可以注册自定义 JSON 解析器以覆盖此格式:

{
  "cat1": {
    "key1": "value1",
    "key2: "value2"
  },
  "cat2": {
    "key1": 0
  }
}

**XML 必须遵循以下格式,尽管您可以注册自定义 XML 解析器以覆盖此格式:

<root>
    <key>value</key>
    <cat>
        <key>value</key>
    </cat>
</root>

文档可在以下网址获取: http://abreksa4.github.io/mini-config-docs/

mini-config 递归合并配置数据。(这意味着如果两个来源(文件)共享键,值也将作为数组合并。)

安装

将其添加到您的 composer.json 中

{
    "require": {
        "abreksa4/mini-config": "0.2"
    }
}

用法

创建一个新的 Config 实例

创建一个新的 Config 实例,传入可选的 $options 数组,目前支持 'targets' 键,该键应包含目标数组,以及 'handlers' 键,该键是一个包含格式为 [$extension => $handler] 的处理器数组。

$config = new Config([
    'targets' => [
        'module/config.xml',
        'config',
        ]
    ],
    'handlers' => array(
        'yml' => function ($file) { return yaml_parse_file($file); }
    )
));

此时 $config 对象正在运行,其中包含来自 config 文件和 module/config.xml 的数据。(注意,我们需要安装 YAML PHP 扩展才能使用 yaml_parse。)

添加更多目标

我们可以通过调用 addTarget 添加更多目标。如您所见,我们可以添加目标数组或单个目标。

$config->addTarget('/anothermodule/config');
$config->addTarget(['config_ini', '../config/local']);

自定义处理器

您可以为任何文件扩展名注册自定义处理器。例如

$config->registerHandler(['yml'], 
       function($file){
            return yaml_parse_file($file);
       }
);

请注意,我们可以为单个处理器注册扩展名数组,也可以指定单个扩展名为字符串。扩展名区分大小写。

将数组合并到配置中

$config->merge([
    'cat3'=> [
        'key1' => 'value1';
    ]
]);

刷新配置

每次添加目标时,我们不是重新扫描和导入所有数据,而是调用 refresh() 方法来重新导入数据

$config->refresh();

数据访问

我们可以通过将 $config 对象视为数组来访问数据,即

$config['database']['password'];