phrity/config
最新稳定版本:1.5.2
Composer 安装命令:
composer require phrity/config
包简介
Configuration interface, class, and factories
README 文档
README
Introduction
Tools for handling configuration. Interfaces, implementation class, various readers and a factory.
Installation
Install with Composer;
composer require phrity/config
The ConfigurationInterface interface
The Phrity\Config\ConfigurationInterface extends
PSR-11 ContainerInterface and
JsonSerializable interfaces.
// ContainerInterface implementation public function get(string $id): mixed; public function has(string $id): bool; // JsonSerializable implementation public function jsonSerialize(): mixed; // Additional methods public function __construct(object|array $config); public function merge(ConfigurationInterface $config): ConfigurationInterface;
The Configuration class
The Phrity\Config\Configuration class implements the ConfigurationInterface.
use Phrity\Config\Configuration; // Initiate with object or associative array $config = new Configuration([ 'a' => 23, 'b' => [ 'bb' => 66, ], ]); // Check and get (case insensitive) from configuration $config->has('a'); // => true $config->get('a'); // => 23 // Trying to get non-exising configuration will throw exception $config->has('c'); // => false $config->get('c'); // throws NotFoundException
Accessing by path
// It is possible to access by path $config->has('b/bb'); // => true $config->get('b/bb'); // => 66
Specifying default
// If default is specified, non-exising configuration will return that value instead of throwing exception $config->get('a', default: 99); // => 23 $config->get('c', default: 99); // => 99
Type coercion
// Some types can be coerced into another type $config->get('a', coerce: 'string'); // => "23"
See Transformers for coerscion options.
Any coercion not specified will cause a CoercionException.
Merging configurations
// Configurations can be merged (immutable, new instance will be returned) $additional = new Configuration(['c' => 12, 'b' => ['bc' => 13]]); $merged = $config->merge($additional);
The Reader classes
A number of configuration readers are available.
- DataReader - Reader for PHP data input
- EnvReader and EnvFileReader - Readers for ENV input (file reader requires
symfony/dotenv) - JsonReader and JsonFileReader - Readers for JSON input
- NeonReader and NeonFileReader - Reader for NEON input (requires
nette/neon) - YamlReader and YamlFileReader - Readers for YAML input (requires
symfony/yaml)
The ConfigurationFactory class
The Phrity\Config\ConfigurationFactory provides shortcuts to create and merge configurations.
$factory = new Phrity\Config\ConfigurationFactory(); $configData = $factory->fromData(data: ['a' => 23]); $configJson = $factory->fromJson(json: '{"a": 23}'); $configJsonFile = $factory->fromJsonFile(path: 'path/to/config.json'); $configYaml = $factory->fromYaml(yaml: 'n: 23'); $configYamlFile = $factory->fromYamlFile(path: 'path/to/config.yaml'); $configNeon = $factory->fromNeon(neon: 'n: 23'); $configNeonFile = $factory->fromNeonFile(path: 'path/to/config.neon'); $configEnv = $factory->fromEnv(); $configEnvFile = $factory->fromEnvFile('.env'); $configMerged = $factory->merge( $configData, $configJson, $configJsonFile, $configYaml, $configYamlFile, $configNeon, $configNeonFile, $configEnv, $configEnvFile, );
Versions
| Version | PHP | |
|---|---|---|
1.5 |
^8.1 |
Readers (neon, neon-file), improved transformer |
1.4 |
^8.1 |
Transfomers |
1.3 |
^8.1 |
Coerce option |
1.2 |
^8.1 |
Reader (data), all file-readers get optional option |
1.1 |
^8.1 |
Readers (yaml, env-file) |
1.0 |
^8.1 |
Interface, implementation, readers (json, json-file, yaml-file, env), factory |
统计信息
- 总下载量: 2.82k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2024-04-04
