This package is a lightweight config loader with type safety as the primary corner stone.
PHP 8.2 or higher.
composer require stefna/config
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.
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';
<?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';
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';
We are always happy to receive bug/security reports and bug/security fixes
The MIT License (MIT). Please see License File for more information.