abreksa4 / mini-config
迷你配置库
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'];