Skip to content

stefna/php-config-loader

Repository files navigation

Config

Build Status Latest Version on Packagist Software License

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.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages