myerscode/config

A package for compiling multi file, cross referencing configuration files

1.1.0 2023-10-30 23:08 UTC

This package is auto-updated.

Last update: 2024-04-30 00:32:03 UTC


README

A PHP utility that creates a configuration object from multi file, cross-referencing php array maps or yaml files

Latest Stable Version Total Downloads License Tests

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.