mefworks / config
Requires
- php: >=5.6
Requires (Dev)
- mikey179/vfsstream: ^1.5
- phpunit/phpunit: ^4.4
Suggests
- symfony/yaml: Required for yaml parsing (mef\Config\FileLoader\YamlFileLoader)
This package is auto-updated.
Last update: 2024-09-08 21:22:04 UTC
README
mef\Config 提供了一个简单、不可变的配置系统。
示例
<?php
$config = (new mef\Config\FileLoader\JsonFileLoader)->loadFile('settings.json');
echo 'The username is: ', $config['database.user'], PHP_EOL;
更完整的示例可以在 examples
目录中找到。
文件加载器
有四种加载器
mef\Config\FileLoader\IniFileLoader
- 加载标准 INI 文件。mef\Config\FileLoader\JsonFileLoader
- 加载标准 JSON 文件。mef\Config\FileLoader\PhpFileLoader
- 包含一个 PHP 数组或可调用函数(必须返回一个数组)。mef\Config\FileLoader\YamlFileLoader
- 加载标准 YAML 文件(通过symfony/yaml
)。
这些加载器每个都返回一个 mef\Config\ArrayConfig
对象。
ConfigInterface
mef\Config\ConfigInterface
只定义了两个方法: get
和 exists
。两者都接受一个字符串键作为唯一参数。如果键不存在,则会抛出 mef\Config\Exception\InvalidKeyException
。
$config = new ArrayConfig([
'database' => [
'user' => 'John'
]
]);
if ($config->exists('database') === true) {
echo $config->get('database')['user'], PHP_EOL;
}
ArrayConfig
mef\Config\ArrayConfig
持有一个不可变的关联数组。与任何从 mef\Config\AbstractConfig
继承而来的配置对象一样,数据可以通过点符号和/或作为数组进行访问。
echo $config->get('database.user'), PHP_EOL;
echo $config['database']['user'], PHP_EOL;
echo $config['database.user'], PHP_EOL;
CachedConfig
mef\Config\CachedConfig
是一个 ConfigInterface
对象的装饰器。它在私有数组中缓存对 get
的调用。这可以很有用,因为在常见的“如果存在则获取”操作中,无需两次解析键。
MergedConfig
mef\Config\MergedConfig
接受一个或多个 ConfigInterface
对象,并将它们合并为一个配置。
$config = new mef\Config\MergedConfig([$config1, $config2]);
配置作为构造函数中单个数组的单个参数传递,按优先级升序排列。即,$config2
覆盖 $config1
。
合并是这样进行的,关联数组可以包含部分覆盖。但是,基于索引的数组将被完全覆盖。