Skip to content

СтроительМенеджераПараметров

Инкапсулирует создание и настройку МенеджерПараметров (configor) с заранее заданным дефолтным составом провайдеров.

Создаётся лениво при первом обращении к СоветДругогоМастера.ПолучитьСтроительМенеджераПараметров() и кэшируется в СоветДругогоМастера: повторные вызовы возвращают тот же экземпляр, поэтому правки строителя, сделанные клиентским кодом, доходят до Поделки. Все настройки выполняются до передачи СоветДругогоМастера в Поделка.

Дефолтный состав провайдеров

ИдентификаторТипПриоритет
envПровайдерПараметровENV1
defaultФайловый метапровайдер (yaml + json + ini)
имя файла autumn-properties, поиск с подкаталогом src
2
inlineПровайдерПараметровСоответствие3

Файловый метапровайдер регистрирует три физических провайдера в менеджере под идентификаторами <база>-yaml, <база>-json, <база>-ini с одинаковым приоритетом. Настройки, заданные через метапровайдер (имя файла, каталоги поиска и т.п.), транслируются во все три физических провайдера.

Канонический нейминг

Методы добавления провайдеров следуют единой схеме ДобавитьПровайдер<Тип>:

МетодНазначение
ДобавитьПровайдеруниверсальный — для произвольного класса-провайдера
ДобавитьПровайдерСоответствиеinline-значения через Соответствие
ДобавитьПровайдерENVпеременные среды
ДобавитьПровайдерФайловмета-обёртка над несколькими форматами (yaml/json/ini)
ДобавитьПровайдерФайлНастроекодин файл с автоопределением формата по расширению

Пример

bsl
Совет = Новый СоветДругогоМастера();
Строитель = Совет.ПолучитьСтроительМенеджераПараметров();

// Заменить дефолтный inline-провайдер своим набором значений
Значения = Новый Соответствие();
Значения.Вставить("моя.настройка", "значение");
Строитель.УдалитьПровайдер("inline");
Строитель.ДобавитьПровайдерСоответствие(Значения, 3, "inline");

// Добавить ещё один файловый метапровайдер
ДопФайлы = Строитель.ДобавитьПровайдерФайлов("dev", 1);
ДопФайлы.УстановитьИмяФайла("autumn-properties.dev");

// Подключить конкретный файл (формат — по расширению)
Строитель.ДобавитьПровайдерФайлНастроек("./config/local.yaml", 0, "local");

// Полностью пересобрать состав с нуля
Строитель.ОчиститьПровайдеры();
Строитель.ДобавитьПровайдерENV("MYAPP_", 1, "env");
Строитель.ДобавитьПровайдерСоответствие(Значения, 2, "inline");

Поделка = Новый Поделка(Совет);

МенеджерПараметров

bsl
// Возвращает внутренний МенеджерПараметров configor.
//
//  Возвращаемое значение:
//   МенеджерПараметров
//
Функция МенеджерПараметров() Экспорт

ДобавитьПровайдер

bsl
// Регистрирует произвольный класс-провайдер в менеджере.
//
// Параметры:
//   КлассПровайдера - Объект - класс, реализующий интерфейс провайдера configor
//   Приоритет - Число - приоритет
//   Идентификатор - Строка - явный идентификатор; при коллизии configor добавит #2, #3, ...
//
//  Возвращаемое значение:
//   Объект - переданный КлассПровайдера
//
Функция ДобавитьПровайдер(Знач КлассПровайдера, Знач Приоритет = Неопределено, Знач Идентификатор = Неопределено) Экспорт

ДобавитьПровайдерСоответствие

bsl
// Регистрирует ПровайдерПараметровСоответствие с заданными значениями.
//
// Параметры:
//   Значения - Соответствие - значения параметров (по умолчанию пустое)
//   Приоритет - Число
//   Идентификатор - Строка
//
//  Возвращаемое значение:
//   ПровайдерПараметровСоответствие
//
Функция ДобавитьПровайдерСоответствие(Знач Значения = Неопределено, Знач Приоритет = Неопределено, Знач Идентификатор = Неопределено) Экспорт

ДобавитьПровайдерENV

bsl
// Регистрирует ПровайдерПараметровENV.
//
// Параметры:
//   Префикс - Строка - префикс переменных среды
//   Приоритет - Число
//   Идентификатор - Строка
//
//  Возвращаемое значение:
//   ПровайдерПараметровENV
//
Функция ДобавитьПровайдерENV(Знач Префикс = "", Знач Приоритет = Неопределено, Знач Идентификатор = Неопределено) Экспорт

ДобавитьПровайдерФайлов

bsl
// Регистрирует файловый метапровайдер — обёртку над несколькими физическими
// файловыми провайдерами (yaml/json/ini) с одинаковым приоритетом.
//
// Параметры:
//   Идентификатор - Строка - базовый идентификатор метапровайдера
//   Приоритет - Число
//   Форматы - Строка - список форматов через пробел (по умолчанию "yaml json ini")
//
//  Возвращаемое значение:
//   ФайловыйМетапровайдер
//
Функция ДобавитьПровайдерФайлов(Знач Идентификатор, Знач Приоритет, Знач Форматы = "yaml json ini") Экспорт

ДобавитьПровайдерФайлНастроек

bsl
// Регистрирует один файловый провайдер по конкретному пути к файлу.
// Формат определяется по расширению (.yaml/.yml — yaml, .json — json, .ini — ini).
//
// Параметры:
//   ПутьКФайлу - Строка - полный или относительный путь к файлу настроек
//   Приоритет - Число
//   Идентификатор - Строка
//
//  Возвращаемое значение:
//   Объект - класс-провайдер (ПровайдерПараметровYAML/JSON/INI)
//
Функция ДобавитьПровайдерФайлНастроек(Знач ПутьКФайлу, Знач Приоритет = Неопределено, Знач Идентификатор = Неопределено) Экспорт

УдалитьПровайдер

bsl
// Удаляет (отключает) провайдер по идентификатору.
//
// Если идентификатор соответствует файловому метапровайдеру —
// отключает все его физические провайдеры и удаляет метапровайдер из реестра.
//
// Параметры:
//   Идентификатор - Строка
//
Процедура УдалитьПровайдер(Знач Идентификатор) Экспорт

ОчиститьПровайдеры

bsl
// Полностью очищает состав провайдеров: пересоздаёт МенеджерПараметров
// и сбрасывает реестр файловых метапровайдеров.
//
// Полезно когда нужно собрать собственную композицию с нуля,
// не наследуя дефолтный состав (env / default / inline).
//
Процедура ОчиститьПровайдеры() Экспорт

Провайдер

bsl
// Возвращает обёртку ПровайдерПараметров (configor) по идентификатору.
//
// Параметры:
//   Идентификатор - Строка
//
//  Возвращаемое значение:
//   ПровайдерПараметров (обёртка configor) или Неопределено
//
Функция Провайдер(Знач Идентификатор) Экспорт

ПровайдерФайлов

bsl
// Возвращает зарегистрированный файловый метапровайдер.
//
// Параметры:
//   Идентификатор - Строка
//
//  Возвращаемое значение:
//   ФайловыйМетапровайдер
//
Функция ПровайдерФайлов(Знач Идентификатор) Экспорт

НастройкаПоискаФайла

bsl
// Возвращает глобальный объект настроек поиска файлов МенеджерПараметров
// (общий fallback для всех файловых провайдеров).
//
//  Возвращаемое значение:
//   НастройкиФайловогоПровайдера
//
Функция НастройкаПоискаФайла() Экспорт

Файловый метапровайдер

Возвращается методами ДобавитьПровайдерФайлов / ПровайдерФайлов. Проксирует настройки сразу в физические провайдеры (<база>-yaml, <база>-json, <база>-ini).

Доступные методы:

  • Идентификатор() — базовый идентификатор
  • ИдентификаторыФизическихПровайдеров() — фиксированный массив идентификаторов
  • Форматы() — фиксированный массив форматов
  • Настройки(Формат)НастройкиФайловогоПровайдера конкретного физического провайдера
  • УстановитьПриоритет(Приоритет)
  • УстановитьИмяФайла(Имя)
  • УстановитьФайлПараметров(Путь)
  • ДобавитьСтандартныеКаталогиПоиска(ВложенныйКаталог = "")
  • ДобавитьКаталогПоиска(Каталог)
  • ОчиститьПутиПоиска()
  • УстановитьВложенныйКаталогПоиска(ВложенныйКаталог)
  • Отключить() / Включить()