navindex/simple-config

Simple library to create and modify a configuration structure.

v1.0.0 2025-07-31 09:32 UTC

This package is auto-updated.

Last update: 2025-07-31 09:42:58 UTC


README

Unit tests Code analysis Coverage Status License: MIT

1. What Is It

Simple config is a class to work with configuration settings. It helps you to perform actions like add, remove, check, append, subtract etc. by using dot notation keys.

2. What Is It Not

This library does not read the filesystem or other environment settings. To use an .env file to feed Simple config, use it together with phpdotenv or other similar library.

3. Installation

This package can be installed through Composer.

composer require balinomad/simple-config

4. Usage

The Config object is immutable. This means methods like with, without, append, and merge do not change the original object; they return a new, modified Config instance.

use BaliNomad\SimpleConfig\Config;

$options = [
    'allowed_pets' => ['dog', 'cat', 'spider'],
    'cat' => [
        'name' => 'Mia',
        'food' => ['tuna', 'chicken', 'lamb'],
    ],
    'dog' => [
        'name' => 'Bless',
        'color' => [
            'body' => 'white',
            'tail' => 'black',
        ]
    ],
    'has_spider' => true
];

$config = new Config($options);

// with(), without(), etc. return a NEW Config instance.
$newConfig = $config
    ->with('has_spider', false)                 // Set a value
    ->without('dog.color.tail')                 // Remove a value
    ->append('cat.food', 'salmon')              // Add an item to an array
    ->subtract('allowed_pets', 'spider');       // Remove an item from an array

// Get values using dot notation
$catFood = $newConfig->get('cat.food');
// Returns: ['tuna', 'chicken', 'lamb', 'salmon']

// Check if a key exists
$hasTailColor = $newConfig->has('dog.color.tail');
// Returns: false

// The original $config object remains unchanged
$originalSpiderSetting = $config->get('has_spider');
// Returns: true

// Get the entire configuration as an array
$arrConfig = $newConfig->toArray();

5. API Reference

Method Attributes Returns Description
constructor ?array $config, int $cleaningFlags self Creates a new Config instance.
with $key, $value self Returns a new instance with a value set.
without $key self Returns a new instance with a key removed.
get $key, $default mixed Retrieves a value using dot notation.
has $key bool Checks if a key exists.
append $key, $value self Returns a new instance with a value appended to an array.
subtract $key, $value self Returns a new instance with a value removed from an array.
merge $config, $method self Returns a new instance merged with another configuration.
split $key self Returns a new instance containing only a subset of the config.
toArray - array Returns the entire configuration as an array.
count - int Counts all leaf configuration values. Non-associative arrays are counted as a single leaf.
getIterator - Traversable Gets an iterator for the top-level items.
offsetExists $offset bool Implements ArrayAccess. Checks if a key exists (e.g., isset($config['app.key'])).
offsetGet $offset mixed Implements ArrayAccess. Gets a value (e.g., $config['app.key']).

Note: Modifying a Config object via array access (e.g., $config['key'] = 'value') is not permitted and will throw a LogicException. Use the with() and without() methods instead.