nimble/caboodle

配置和设置管理器,可以从磁盘或AWS Secrets Manager自动加载。

1.0 2023-08-06 14:10 UTC

This package is auto-updated.

Last update: 2024-09-06 16:32:39 UTC


README

Latest Stable Version GitHub Workflow Status Codecov branch License

A simple PSR-11 compliant configuration manager with lazy loading from files, AWS Secrets Manager, or any other source.

安装

composer require nimbly/config

使用

使用LoaderInterface实例的数组实例化Config管理器。您可以指定尽可能多的加载器 - 或根本不指定。

$config = new Config([
	new FileLoader(__DIR__ . "/config")
]);

从配置中获取数据。

$config->get("database.hostname");

加载器

加载器负责接受一个key,加载,然后将数据返回。

提供了两个内置加载器:FileLoaderAwsLoader,但提供了一个LoaderInterface以实现任何其他加载器。

FileLoader

FileLoader将尝试从本地文件系统加载配置数据。

使用配置文件的路径实例化FileLoader

new FileLoader("/path/to/config/files");

配置文件应返回一个包含配置数据的关联数组。

<?php

// file: config/database.php

return [
	"host" => "localhost",
	"port" => 1234,
	"user" => "dbuser",
	"password" => "dbpassword",
];

AwsLoader

AwsLoader将尝试从AWS Secrets Manager加载配置数据。

注意
  • 如果您的AWS Secrets Manager密钥包含点("。"),则加载器无法正确解析密钥名称。建议您的AWS密钥采用AWS最佳实践建议的prod/db/default形式。
  • 目前此加载器不可用VersionIdStageVersion选项。
  • 目前不支持SecretBinary值。加载器将仅在SecretString属性中查找值。

动态添加加载器

您可以动态添加加载器。

$config->addLoader(
	new FileLoader(__DIR__ . "/config")
);

访问值

可以使用点表示法访问配置键,最左边的是加载器将用于解析和加载配置数据的key

$config->get("database.host");

上面的示例将加载从传递到Config管理器的配置路径中加载的database.php文件的内容。

您的配置文件可能包含嵌套的关联数组,可以使用相同的点表示法访问。

$config->get("database.connections.default.host");

PSR-11说明

默认情况下,如果项存储中未找到项,Caboodle将返回一个null

但是,PSR-11规定,当项未找到时,应抛出一个NotFoundExceptionInterface实例。

如果您希望在未找到项时抛出异常,可以调用setThrowIfNotFound()方法。

$config->setThrowIfNotFound(true);

键提示

默认情况下,假定根键名是第一个点("。")之前的所有内容。但是,如果根键名包含点,则可以使用单个井号(#)代替点来提示键名。

例如

$config->get("prod.database#connections.default.hostname");

手动添加值

您还可以手动将新的键/值对添加到配置管理器中。

$config->add("queue", [
	"name" => "jobs",
	"host" => "localhost",
	"port" => 1234
]);

或者,您可以将配置数据的全部内容赋值。

$config->setItems([
	"key1" => "value1",
	"key2" => [
		"key3" => "value3"
	]
]);