myerscode / config
A package for compiling multi file, cross referencing configuration files
Requires
- php: ^7.4|^8.0
- ext-json: *
- myerscode/utilities-bags: ^1.0|^2.0
- myerscode/utilities-files: ^1.0|^2.0
- myerscode/utilities-strings: ^1.0|^2.0
- symfony/serializer: ^5.4|^6.0
- symfony/yaml: ^5.4|^6.0
Requires (Dev)
- mockery/mockery: ^1.4
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.5
README
A PHP utility that creates a configuration object from multi file, cross-referencing php array maps or yaml files
Why this package is helpful?
This package will allow you to build a config object, that you can simply retrieve values from. You manage configuration across multiple PHP or YAML files, with the ability to cross-reference properties in order to build up complex values.
Install
You can install this package via composer:
composer require myerscode/config
Usage
Creating a Config Store
To get started ll you need to do is you need to create a Config
instance and start loading data into files into it.
$config = new Config(); $config->loadFiles([ 'config/app.php', 'config/db.yaml', ]); $config->loadFile('config/cache.php'); $config->loadData(['api_key' => 'abc123']); // example config object [ 'name' => 'myerscode', 'db_name' => 'myerscode_db', 'api_key' => 'abc123', ]
Namespaced Configuration
By default, config from files will be merged recursivly when loaded in. If you want to
give each file a top level namespace call the loadFilesWithNamespace
and loadFileWithNamespace
methods to have each
file be loaded into a namespace using their filename
$config = new Config(); $config->loadFilesWithNamespace([ 'config/app.php', 'config/db.yaml', ]); $config->loadFileWithNamespace('config/cache.php'); // example config object [ 'app' => [...], 'db' => [...], 'cache' => [...], ]
Retrieving a value
Retrieve a single value from the store by using the value
method and passing in a key.
Using dot notation
you can access deep values of a config element, or retrieve the entire
object by calling its top level namespace.
$config->value('app.name'); $config->value('app'); $config->value('api_key');
Get all store value
Get all the values from the store as an array using the values
method.
$config->values();
Accessing the store
Accessing the values directly is done by calling the store
method.
$store = $config->store();
Config Syntax
A basic config file, is a PHP file that will just return an array or a YAML file.
// app.config.php return [ 'name' => 'Fred Myerscough', 'settings' => [ 'a', 'b', 'c' ], ];
Cross Referencing Values
// app.config.php return [ 'name' => 'myerscode', 'env' => 'myerscode', ]; // db.config.php return [ 'db' => [ 'setting' => [ 'name' => '${env}_${name}_db', ] ], 'db_name' => '${db.config.name}' ];
Issues and Contributing
We are very happy to receive pull requests to add functionality or fixes.
Bug reports and feature requests can be submitted on the Github Issue Tracker.
Please read the Myerscode contributing guide for information on our Code of Conduct.
License
The MIT License (MIT). Please see License File for more information.