A PHP utility that creates a configuration object from multi file, cross-referencing php array maps or yaml files
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.
You can install this package via composer:
composer require myerscode/config
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',
]
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' => [...],
]
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 the values from the store as an array using the values
method.
$config->values();
Accessing the values directly is done by calling the store
method.
$store = $config->store();
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'
],
];
// app.config.php
return [
'name' => 'myerscode',
'env' => 'myerscode',
];
// db.config.php
return [
'db' => [
'setting' => [
'name' => '${env}_${name}_db',
]
],
'db_name' => '${db.config.name}'
];
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.
The MIT License (MIT). Please see License File for more information.