stefna / config
Lightweight config loader with type safety
Installs: 3 816
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 3
Forks: 0
Open Issues: 0
Requires
- php: ^8.2
- psr/container: ^2.0
- stefna/ds-collection: ^1.0
Requires (Dev)
- bnf/phpstan-psr-container: ^1.0
- phpstan/extension-installer: ^1.2
- phpstan/phpstan: ^1.10
- phpstan/phpstan-phpunit: ^1.1
- phpunit/phpunit: ^10.5
- squizlabs/php_codesniffer: ^3.0
- stefna/codestyle: ^1.15
- tomasvotruba/type-coverage: ^1.0
This package is auto-updated.
Last update: 2025-05-19 13:07:33 UTC
README
This package is a lightweight config loader with type safety as the primary corner stone.
Requirements
PHP 8.2 or higher.
Installation
composer require stefna/config
Motivation
Most config loaders fail to give the user a way to use it in a type safe way.
It also promises to be immutable after first read.
Usage
Load config from file
We support writing your config in php files
Example:
<?php // config.php return [ 'config-key' => 'value', 'nested' => [ 'key' => 'nested-value' 'bool-key' => false, ], ];
$config = new \Stefna\Config\FileConfig('path-to-php/config.php'); // config file is not read until it's needed $config->getBool('nested.bool-key') === false; $config->getString('config-key') === 'value';
Load multiple files into config
<?php // common.php return [ 'config-key' => 'value', 'nested' => [ 'key' => 'nested-value' 'bool-key' => false, ], ];
<?php // production.php return [ 'config-key' => 'production-value', 'nested' => [ 'extra-key' => 42, ], ];
$config = new \Stefna\Config\FileCollectionConfig('path-to-php/'); $config->addFile('common.php'); $config->addFile('production.php'); // config files is not read until it's needed $config->getInt('nested.extra-key') === 42; $config->getString('config-key') === 'product-value';
Mutable config
We do provide a mutable config that allows you to override values in the "root" config this is meant to be used when testing applications but still allow the "root" configuration to stay immutable
$rootConfig = new \Stefna\Config\FileCollectionConfig('path-to-php/'); $rootConfig->addFile('common.php'); $rootConfig->addFile('production.php'); $config = new \Stefna\Config\MutableConfig($rootConfig); $config->setConfigValue('config-key', 'overridden-value'); $config->getString('config-key') === 'overridden-value'; $config->resetConfigValue('config-key'); $config->getString('config-key') === 'production-value';
Contribute
We are always happy to receive bug/security reports and bug/security fixes
License
The MIT License (MIT). Please see License File for more information.