phrity / config
Configuration interface, class, readers, writers, and factory
Requires
- php: ^8.1
- ext-json: *
- phrity/util-accessor: ^1.3
- phrity/util-transformer: ^1.2.1
- psr/container: ^1.0 || ^2.0
Requires (Dev)
- nette/neon: ^3.0
- phpstan/phpstan: ^2.0
- phpunit/phpunit: ^10.0 || ^11.0 || ^12.0 || ^13.0
- robiningelbrecht/phpunit-coverage-tools: ^1.9
- squizlabs/php_codesniffer: ^3.5 || ^4.0
- symfony/dotenv: ^6.0 || ^7.0 || ^8.0
- symfony/yaml: ^6.0 || ^7.0 || ^8.0
Suggests
- nette/neon: Required for loading NEON configuration
- symfony/dotenv: Required for loading .env files
- symfony/yaml: Required for loading YAML configuration
Provides
None
Conflicts
None
Replaces
None
README
Introduction
Tools for handling configuration. Interfaces, implementation classes, various readers, writers and a factory.
Installation
Install with Composer;
composer require phrity/config
Documentation
Configuration
Implements PSR-11 ContainerInterface, providing get() and has() methods.
$config = new Configuration(['opt1' => 11, 'opt2' => 22]); $config->has('opt1'); // -> true $config->get('opt1'); // -> 11
Support path access, default value and type coercion.
$config->has('a/b/c'); $config->get('a/b/c', default: 99, coerce: 'string');
Support merging.
$merged = $config->merge(new Configuration($data));
Read more on Configuration.
Writable configuration
Identical to Configuration but also support writing values on the configuration.
$config = new WritableConfiguration(['opt1' => 11, 'opt2' => 22]); $config->set('opt1', 123); $config->with('opt1', 123);
Read more on WritableConfiguration.
Reader classes
Classes that create configuration instance from various sources.
$reader = new JsonFileReader(); $config = $reader->createConfiguration(path: 'path/to/file.json');
List of available readers:
- DataReader - Reader for PHP data input
- DirectoryReader - Reads and merges all supported configuration files in directory
- 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)
Writer classes
Classes that write configuration to file.
$reader = new JsonFileWriter(); $config = $reader->writeConfiguration($config, 'path/to/file.json');
List of available writers:
- JsonFileWriter - Writer for JSON output
Factory
A factory that provides shortcuts to create and merge configurations.
$factory = new ConfigurationFactory(); $config = $factory->fromJsonFile(path: 'path/to/config.json');
Read more on ConfigurationFactory.
