macfja / chain-config
一个配置加载器,顺序很重要。
Requires
- php: >=5.3
Requires (Dev)
- nette/neon: ^2.3
- phpunit/phpunit: ^4.8
- squizlabs/php_codesniffer: ^2.5
- symfony/yaml: ^2.8
Suggests
- nette/neon: For reading Neon configuration format
- symfony/yaml: For reading Yaml configuration format
This package is auto-updated.
Last update: 2024-09-17 01:16:41 UTC
README
一个配置加载器,顺序很重要。
功能
- 多个配置路径
- 多个加载器
- Ini (
.ini,.properties) - Json (
.json) - Neon (
.neon) - Php (
.php) - Xml (
.xml) - Yaml (
.yml,.yaml)
- Ini (
- 处理
.dist文件 - 路径顺序很重要
- 读取器顺序很重要
- 动态键
- 动态值
处理 .dist 文件
当搜索要加载的配置文件时,库检查是否存在 .dist 文件。如果存在,并且没有不带 .dist 部分的文件,则使用该文件。
所以,在这个例子中
├── test1.ini.dist
├── test2.ini
└── test2.ini.dist
test1.ini.dist 将被加载,
但不会加载 test2.ini.dist,因为存在文件 test2.ini。(并且将加载 test2.ini)
顺序很重要
配置数据按照你定义的顺序加载。加载器也是按照你定义的顺序使用的。
示例
├── 01-my-secondary-path/
│ └── a.php
└── 02-my-main-path/
├── a.ini
├── b.ini
└── b.xml
如果你将 02-my-main-path 定义为第一个路径,将 01-my-secondary-path 定义为第二个路径。如果你请求 a.* 配置,则库将首先加载 02-my-main-path/a.php,然后加载 02-my-main-path/a.ini。后续加载不会覆盖已加载的数据,后续加载仅添加缺失的键/值。
读取器的顺序也很重要。在前面的结构中,如果你将 Xml 读取器 定义在 Ini 加载器 之前,那么如果你请求 b.* 配置,则首先加载的文件是 02-my-main-path/b.xml,然后是 02-my-main-path/b.ini 文件。
动态数据
库提供了两个回调功能。一个用于键,另一个用于值。在键被发送到库之前,它可以被一个或多个回调函数更改。同样,对于值,在返回之前,库会将值发送给所有已注册的回调。
这可以用来根据另一个配置或环境相关变量更改键或值。 请参见下面的示例
安装
安装库最简单的方法是使用 Composer
composer require macfja/chain-config
使用方法
创建一个 Config 对象
$config = new Config(); $config->appendPath(__DIR__ . DIRECTORY_SEPARATOR . 'config'); $config->appendReader(new IniReader());
读取配置
engine = $config->get('database.engine');
读取器格式
限制
你无法在键的第一部分使用目录分隔符(Unix/Linux上的 /,Windows上的 \)或路径分隔符(Unix/Linux上的 :)。
附加类
你可以找到两个类,这些类是 ChainConfig 用来工作的
MacFJA\ChainConfig\Collection\MultiPartKeyArray:这个类支持点键访问的读取/写入(点只是一个选项!)MacFJA\ChainConfig\Collection\OrderedGroup:这个类支持路径分组和排序