Component for fetching, merging, and validating configuration from various sources.
Whenever you have various environments for multiple purposes: production, staging, test, local and more the need arises to keep the configuration of those consistent across possibly different platforms like local environments and some external storage like AWS Simple Systems Manager and not to fail during critical deploy.
This component allows you to keep it tight in one source with a predefined yaml solution.
composer require piotrkreft/config
ℹ️ Variables declared within envs scope take the precedence over global ones.
ℹ️ Global variables can be disabled in specific env with the disable
flag.
Validation of entries:
vendor/bin/pk-config -c config.yaml validate dev
Displaying of entries:
vendor/bin/pk-config -c config.yaml display dev
use PK\Config\ConfigFactory;
$config = ConfigFactory::create(realpath('config.yaml'));
$config->validate('dev');
$config->fetch('dev');
It's possible to use the component as a Symfony Bundle.
Just make sure you have symfony/http-kernel
installed and add PK\Config\PKConfigBundle
to your application Kernel.
If used as such commands will receive pk:config:
and can be used like:
bin/console pk:config:validate dev
To be able to use a different configuration sources adapters are needed. By default, package provides:
- aws_ssm (multiple)(
PK\Config\StorageAdapter\{AwsSsm, AwsSsmByPath}
) - for AWS Simple Systems Manager parameters - local_env (
PK\Config\StorageAdapter\LocalEnv
) - for local environment variables
and each of those is available to be instantiated via component configuration.
If needed a new adapter can be easily created. Just remember to interface it with PK\Config\StorageAdapterInterface
and to instantiate it.
ℹ️ Order of the adapters in each environment is also a priority. If the first adapter provides value, the following will be ignored.
ℹ️ If adapter has multiple option assigned it can be configured with multiple different instances. If so each can be referenced in env.adapters like {adapter}.{name} (i.e. aws_ssm.default)
composer test
Static checks issues fix
composer fix
Please see CHANGELOG for more information on what has changed recently.
The MIT License (MIT). Please see LICENSE for more information.