macfja/chain-config

一个配置加载器,顺序很重要。

0.1.0 2016-01-12 22:56 UTC

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)
  • 处理 .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');

详细的类API

使用示例

读取器格式

更多信息请参阅读取器文档

限制

你无法在键的第一部分使用目录分隔符(Unix/Linux上的 /,Windows上的 \)或路径分隔符(Unix/Linux上的 :)。

附加类

你可以找到两个类,这些类是 ChainConfig 用来工作的