laminas/laminas-config-aggregator

轻量级库,用于收集和合并来自不同来源的配置

1.15.0 2024-05-12 10:04 UTC

README

Build Status

🇷🇺 俄罗斯公民

我们,Laminas的参与者,来自不同的国家。我们中许多人既有在俄罗斯的朋友、亲属和同事,也有在乌克兰的。我们中的一些人出生在俄罗斯。我们中的一些人现在住在俄罗斯。我们中的一些人的祖父母曾在二战中与法西斯主义者作战。在这里,没有人支持法西斯主义。

我们其中一人有一位乌克兰亲属,她和儿子一起从家中逃离。由于前方道路上的轰炸,火车延误了。我们有一些朋友在防空洞里躲避。我们在空袭后焦急地等待他们的消息,空袭不分青红皂白地攻击医院、学校、幼儿园和住宅。我们不是从任何媒体上得知这些消息的。我们亲眼目睹了这一切。

您足够信任我们使用我们的程序,我们请求您再次信任我们。我们需要您的帮助。走出家门,抗议这场毫无意义的战争。停止杀戮。说“停止战争!”

🇺🇸 致俄罗斯公民

我们Laminas来自世界各地。我们中许多人既有在俄罗斯的朋友、家人和同事,也有在乌克兰的。我们中的一些人出生在俄罗斯。我们中的一些人现在住在俄罗斯。我们中的一些人的祖父母曾在二战中与纳粹作战。在这里,没有人支持法西斯主义。

一位团队成员有一位乌克兰亲属,她和儿子一起逃离了她的家。由于前方道路上的轰炸,火车延误了。我们有一些朋友在防空洞里躲避。我们在空袭后焦急地等待他们的消息,空袭不分青红皂白地攻击医院、学校、幼儿园和住宅。我们不是从任何媒体上得知这些消息的。这是我们亲身的经历。

您足够信任我们使用我们的软件。我们请求您信任我们说出真相。我们需要您的帮助。走出家门,抗议这场不必要的战争。停止杀戮。说“停止战争!”

聚合并合并来自多种格式的配置。支持缓存以在生产环境中快速启动。

用法

独立的 ConfigAggregator 可以用来合并基于PHP的配置文件

use Laminas\ConfigAggregator\ConfigAggregator;
use Laminas\ConfigAggregator\PhpFileProvider;

$aggregator = new ConfigAggregator([
    new PhpFileProvider('*.global.php'),
]);

var_dump($aggregator->getMergedConfig());

使用此提供者,每个文件应返回一个PHP数组

// db.global.php
return [
    'db' => [
        'dsn' => 'mysql:...',
    ],    
];

// cache.global.php
return [
    'cache_storage' => 'redis',
    'redis' => [ ... ],
];

结果

array(3) {
  'db' =>
  array(1) {
    'dsn' =>
    string(9) "mysql:..."
  }
  'cache_storage' =>
  string(5) "redis"
  'redis' =>
  array(0) {
     ...
  }
}

配置以传递的顺序合并,后来条目具有优先级。

laminas-config 一起,laminas-config-aggregator 还可以用来加载不同格式的配置,包括 YAML、JSON、XML 或 INI

use Laminas\ConfigAggregator\ConfigAggregator;
use Laminas\ConfigAggregator\LaminasConfigProvider;

$aggregator = new ConfigAggregator([
    new LaminasConfigProvider('config/*.{json,yaml,php}'),
]);

有关更多详细信息,请参阅文档