Вход на сайт

Просмотр новости

Найдите то, что Вас интересует

karelwintersky/arris.config

Дата публикации: 03-08-2026 16:43:11

Arris µFramework: Config reader/writer and AppConfig

Основное содержимое страницы с новостью.

Arris µFramework: Config reader/writer and AppConfig

Maintainers

6d4a5bbb45fc701f595e17c74b94658126704ebc4eafb3fb1aa8bc613cdcbbbd?s=48&d=identicon

1.0.0 2026-08-03 16:40 UTC

Requires

  • php: ^8.2
  • ext-dom: *
  • ext-libxml: *
  • ext-simplexml: *

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
UsageAppConfig (рекомендуется)

Загружает файлы и сливает их с дефолтами. 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).

Схожие новости

#Наименование новостиТональностьИнформативностьДата публикации
1ratts/rih01003-08-2026
2risetechapps/api-key-for-laravel010003-08-2026
3thesis/grpc-logging03503-08-2026
4bedivierre/text-parser03503-08-2026
5thesis/grpc-retry027.3803-08-2026
6fapost/support08.2603-08-2026
7solution25/bundle-configurator06003-08-2026
8shelfwatch/shelfwatch01003-08-2026
9Oier Irisarri igerilaria0014-11-2017
10Rebuilding the CircleCI CLI from scratch0507-07-2026

Классификация: . Схожих патентов: 0. Схожих новостей: 10. Тональность: 0. Информативность: 10. Источник: packagist.org.