Programatically edit array-based php configuration files.

v1.0.1 2021-02-07 00:54 UTC

This package is auto-updated.

Last update: 2021-04-07 01:17:17 UTC


Programatically edit array-based php configuration files.


Config Editor can be installed via Composer using the require command.

$ composer require cupoftea/config-editor


Basic Example

 * Config Editor does not include file read & write operations
 * and must be passed a string representing the file contents.
$config = file_get_contents('config/my_config.php');
$editor = new \CupOfTea\Config\Editor($config);

// Values can be set by passing a key and a value, or passing it an associative array with the values you want to set.
// Editor::set() returns the editor instance for easy chaining.
$editor->set('foo', 'bar')
    ->set(['baz' => 'qux', 'quux' => 'quuz']);

// Nested values can be set using array "dot" notation
$editor->set('paths.views', 'resources/views')
    ->set('paths.lang', 'resources/lang');

// Use the unset() method to completely remove a key from the configuration.
    ->unset(['baz', 'quux']);

// Once you are done making edits, you can compile the config back to a string and write it to a file.
$newConfig = $editor->compile();
file_put_contents('config/my_edited_config.php', $newConfig);

Configuration File

A configuration file must return an array. The array cannot be computed at runtime.

When using an invalid configuration file, the Editor::compile() method will throw a CupOfTea\Config\InvalidConfigurationException.



use Illuminate\Support\Arr;

function env($key, $default = null) {
    return $_ENV[$key] ?? $default;

return [
    'computed_val' => Arr::get($_SERVER, 'DOCUMENT_ROOT'),
    'env_val' => env('HOME'),
    'string' => 'str',



function cfg($arr) {
    return $arr;

return cfg(['foo' => 'bar']);

Invalid Keys

Config Editor does not allow setting nested values on keys that do not have an array value, and will throw an Exception if you attempt to do so at when compiling.

$config = <<<'CODE'

return ['foo' => ['bar' => 'baz']];
$editor = new \CupOfTea\Config\Editor($config);

// throws \CupOfTea\Config\InvalidKeyException
$editor->set('', 'qux')->compile();

// throws \CupOfTea\Config\InvalidKeyException
    ->set('paths', 'string')
    ->set('paths.config', 'configs/')