Arris µFramework: Config reader/writer and AppConfig
1.0.0 2026-08-03 16:40 UTC
Requires
This package is auto-updated.
Last update: 2026-08-03 16:43:28 UTC
Конфигуратор экосистемы Arris. Включает:
Arris\Core\Config\Config (PHP, INI, JSON, XML, YAML, Properties, Serialize);Arris\AppConfig — загрузка конфиг-файлов с дефолтами и рекурсивным слиянием.InstallationIMPORTANT: Если нужны YAML-файлы или строки, подключите Symfony Yaml component (
composer require symfony/yaml).
$ composer require karelwintersky/arris.configUsageAppConfig (рекомендуется)
Загружает файлы и сливает их с дефолтами. 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 и итерацию.
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/phpunitLicense
The MIT License (MIT).
| # | Наименование новости | Тональность | Информативность | Дата публикации |
|---|---|---|---|---|
| 1 | ratts/rih | 0 | 10 | 03-08-2026 |
| 2 | risetechapps/api-key-for-laravel | 0 | 100 | 03-08-2026 |
| 3 | thesis/grpc-logging | 0 | 35 | 03-08-2026 |
| 4 | bedivierre/text-parser | 0 | 35 | 03-08-2026 |
| 5 | thesis/grpc-retry | 0 | 27.38 | 03-08-2026 |
| 6 | fapost/support | 0 | 8.26 | 03-08-2026 |
| 7 | solution25/bundle-configurator | 0 | 60 | 03-08-2026 |
| 8 | shelfwatch/shelfwatch | 0 | 10 | 03-08-2026 |
| 9 | Oier Irisarri igerilaria | 0 | 0 | 14-11-2017 |
| 10 | Rebuilding the CircleCI CLI from scratch | 0 | 5 | 07-07-2026 |