karelwintersky/arris.config

Arris µFramework: Config reader/writer and AppConfig

Maintainers

Package info

github.com/ArrisFramework/Arris.Config

pkg:composer/karelwintersky/arris.config

Transparency log

Statistics

Installs: 3

Dependents: 1

Suggesters: 0

Stars: 0

Open Issues: 0

1.0.0 2026-08-03 16:40 UTC

This package is auto-updated.

Last update: 2026-08-03 16:43:28 UTC


README

Конфигуратор экосистемы Arris. Включает:

  • низкоуровневый читатель/писатель конфигов Arris\Core\Config\Config (PHP, INI, JSON, XML, YAML, Properties, Serialize);
  • прикладной класс Arris\AppConfig — загрузка конфиг-файлов с дефолтами и рекурсивным слиянием.

Requirements

  • PHP 8.2+

IMPORTANT: Если нужны YAML-файлы или строки, подключите Symfony Yaml component (composer require symfony/yaml).

Installation

$ composer require karelwintersky/arris.config

Usage

AppConfig (рекомендуется)

Загружает файлы и сливает их с дефолтами. null в файле удаляет ключ из дефолтов, массивы сливаются рекурсивно.

use Arris\AppConfig;

$config = new AppConfig(
    ['config.json', '?config.local.json'],  // '?' - опциональный файл
    ['db' => ['host' => 'localhost', 'port' => 3306]]
);

$host = $config->get('db.host');          // из файла или дефолта
$config->set('app.debug', true);          // установить
$config->add(['cache' => ['ttl' => 300]]); // массовое слияние
$config->replace([...]);                   // заменить целиком

Доступ через dot-нотацию, ArrayAccess и итерацию.

Config (низкоуровневый)

use Arris\Core\Config\Config;
use Arris\Core\Config\Parser\Json;

// Один файл
$conf = Config::load('config.json');
$conf = new Config('config.json');

// Несколько файлов
$conf = new Config(['config.json', 'config.xml']);

// Директория (glob по алфавиту)
$conf = new Config(__DIR__ . '/config');

// Опциональные файлы
$conf = new Config(['config.dist.json', '?config.json']);

// Указанный парсер (применяется ко всем файлам)
$conf = new Config('configuration.config', new Json);

// Из строки
$conf = Config::load($settingsJson, new Json, true);

// Сохранение (кроме PHP)
$conf->toFile('config.yaml');
$ini = $conf->toString(new \Arris\Core\Config\Writer\Ini());

При загрузке нескольких файлов значения дублирующихся ключей берутся из последнего файла.

Warning: Не включайте непроверенные конфиги в PHP-формате — он может выполнять произвольный код.

Наследование AbstractConfig

Для конфига «без файлового I/O» расширьте AbstractConfig и заполните getDefaults():

use Arris\Core\Config\AbstractConfig;

class MyConfig extends AbstractConfig
{
    protected function getDefaults()
    {
        return [
            'host' => 'localhost',
            'port' => 80
        ];
    }
}

Слияние инстансов

$conf1 = Config::load('conf1.json');
$conf2 = Config::load('conf2.json');
$conf1->merge($conf2);

Testing

$ composer install
$ vendor/bin/phpunit

License

The MIT License (MIT).