СтроительМенеджераПараметров
Инкапсулирует создание и настройку МенеджерПараметров (configor) с заранее заданным дефолтным составом провайдеров.
Создаётся лениво при первом обращении к СоветДругогоМастера.ПолучитьСтроительМенеджераПараметров() и кэшируется в СоветДругогоМастера: повторные вызовы возвращают тот же экземпляр, поэтому правки строителя, сделанные клиентским кодом, доходят до Поделки. Все настройки выполняются до передачи СоветДругогоМастера в Поделка.
Дефолтный состав провайдеров
| Идентификатор | Тип | Приоритет |
|---|---|---|
env | ПровайдерПараметровENV | 1 |
default | Файловый метапровайдер (yaml + json + ini)имя файла autumn-properties, поиск с подкаталогом src | 2 |
inline | ПровайдерПараметровСоответствие | 3 |
Файловый метапровайдер регистрирует три физических провайдера в менеджере под идентификаторами <база>-yaml, <база>-json, <база>-ini с одинаковым приоритетом. Настройки, заданные через метапровайдер (имя файла, каталоги поиска и т.п.), транслируются во все три физических провайдера.
Канонический нейминг
Методы добавления провайдеров следуют единой схеме ДобавитьПровайдер<Тип>:
| Метод | Назначение |
|---|---|
ДобавитьПровайдер | универсальный — для произвольного класса-провайдера |
ДобавитьПровайдерСоответствие | inline-значения через Соответствие |
ДобавитьПровайдерENV | переменные среды |
ДобавитьПровайдерФайлов | мета-обёртка над несколькими форматами (yaml/json/ini) |
ДобавитьПровайдерФайлНастроек | один файл с автоопределением формата по расширению |
Пример
Совет = Новый СоветДругогоМастера();
Строитель = Совет.ПолучитьСтроительМенеджераПараметров();
// Заменить дефолтный inline-провайдер своим набором значений
Значения = Новый Соответствие();
Значения.Вставить("моя.настройка", "значение");
Строитель.УдалитьПровайдер("inline");
Строитель.ДобавитьПровайдерСоответствие(Значения, 3, "inline");
// Добавить ещё один файловый метапровайдер
ДопФайлы = Строитель.ДобавитьПровайдерФайлов("dev", 1);
ДопФайлы.УстановитьИмяФайла("autumn-properties.dev");
// Подключить конкретный файл (формат — по расширению)
Строитель.ДобавитьПровайдерФайлНастроек("./config/local.yaml", 0, "local");
// Полностью пересобрать состав с нуля
Строитель.ОчиститьПровайдеры();
Строитель.ДобавитьПровайдерENV("MYAPP_", 1, "env");
Строитель.ДобавитьПровайдерСоответствие(Значения, 2, "inline");
Поделка = Новый Поделка(Совет);МенеджерПараметров
// Возвращает внутренний МенеджерПараметров configor.
//
// Возвращаемое значение:
// МенеджерПараметров
//
Функция МенеджерПараметров() ЭкспортДобавитьПровайдер
// Регистрирует произвольный класс-провайдер в менеджере.
//
// Параметры:
// КлассПровайдера - Объект - класс, реализующий интерфейс провайдера configor
// Приоритет - Число - приоритет
// Идентификатор - Строка - явный идентификатор; при коллизии configor добавит #2, #3, ...
//
// Возвращаемое значение:
// Объект - переданный КлассПровайдера
//
Функция ДобавитьПровайдер(Знач КлассПровайдера, Знач Приоритет = Неопределено, Знач Идентификатор = Неопределено) ЭкспортДобавитьПровайдерСоответствие
// Регистрирует ПровайдерПараметровСоответствие с заданными значениями.
//
// Параметры:
// Значения - Соответствие - значения параметров (по умолчанию пустое)
// Приоритет - Число
// Идентификатор - Строка
//
// Возвращаемое значение:
// ПровайдерПараметровСоответствие
//
Функция ДобавитьПровайдерСоответствие(Знач Значения = Неопределено, Знач Приоритет = Неопределено, Знач Идентификатор = Неопределено) ЭкспортДобавитьПровайдерENV
// Регистрирует ПровайдерПараметровENV.
//
// Параметры:
// Префикс - Строка - префикс переменных среды
// Приоритет - Число
// Идентификатор - Строка
//
// Возвращаемое значение:
// ПровайдерПараметровENV
//
Функция ДобавитьПровайдерENV(Знач Префикс = "", Знач Приоритет = Неопределено, Знач Идентификатор = Неопределено) ЭкспортДобавитьПровайдерФайлов
// Регистрирует файловый метапровайдер — обёртку над несколькими физическими
// файловыми провайдерами (yaml/json/ini) с одинаковым приоритетом.
//
// Параметры:
// Идентификатор - Строка - базовый идентификатор метапровайдера
// Приоритет - Число
// Форматы - Строка - список форматов через пробел (по умолчанию "yaml json ini")
//
// Возвращаемое значение:
// ФайловыйМетапровайдер
//
Функция ДобавитьПровайдерФайлов(Знач Идентификатор, Знач Приоритет, Знач Форматы = "yaml json ini") ЭкспортДобавитьПровайдерФайлНастроек
// Регистрирует один файловый провайдер по конкретному пути к файлу.
// Формат определяется по расширению (.yaml/.yml — yaml, .json — json, .ini — ini).
//
// Параметры:
// ПутьКФайлу - Строка - полный или относительный путь к файлу настроек
// Приоритет - Число
// Идентификатор - Строка
//
// Возвращаемое значение:
// Объект - класс-провайдер (ПровайдерПараметровYAML/JSON/INI)
//
Функция ДобавитьПровайдерФайлНастроек(Знач ПутьКФайлу, Знач Приоритет = Неопределено, Знач Идентификатор = Неопределено) ЭкспортУдалитьПровайдер
// Удаляет (отключает) провайдер по идентификатору.
//
// Если идентификатор соответствует файловому метапровайдеру —
// отключает все его физические провайдеры и удаляет метапровайдер из реестра.
//
// Параметры:
// Идентификатор - Строка
//
Процедура УдалитьПровайдер(Знач Идентификатор) ЭкспортОчиститьПровайдеры
// Полностью очищает состав провайдеров: пересоздаёт МенеджерПараметров
// и сбрасывает реестр файловых метапровайдеров.
//
// Полезно когда нужно собрать собственную композицию с нуля,
// не наследуя дефолтный состав (env / default / inline).
//
Процедура ОчиститьПровайдеры() ЭкспортПровайдер
// Возвращает обёртку ПровайдерПараметров (configor) по идентификатору.
//
// Параметры:
// Идентификатор - Строка
//
// Возвращаемое значение:
// ПровайдерПараметров (обёртка configor) или Неопределено
//
Функция Провайдер(Знач Идентификатор) ЭкспортПровайдерФайлов
// Возвращает зарегистрированный файловый метапровайдер.
//
// Параметры:
// Идентификатор - Строка
//
// Возвращаемое значение:
// ФайловыйМетапровайдер
//
Функция ПровайдерФайлов(Знач Идентификатор) ЭкспортНастройкаПоискаФайла
// Возвращает глобальный объект настроек поиска файлов МенеджерПараметров
// (общий fallback для всех файловых провайдеров).
//
// Возвращаемое значение:
// НастройкиФайловогоПровайдера
//
Функция НастройкаПоискаФайла() ЭкспортФайловый метапровайдер
Возвращается методами ДобавитьПровайдерФайлов / ПровайдерФайлов. Проксирует настройки сразу в физические провайдеры (<база>-yaml, <база>-json, <база>-ini).
Доступные методы:
Идентификатор()— базовый идентификаторИдентификаторыФизическихПровайдеров()— фиксированный массив идентификаторовФорматы()— фиксированный массив форматовНастройки(Формат)—НастройкиФайловогоПровайдераконкретного физического провайдераУстановитьПриоритет(Приоритет)УстановитьИмяФайла(Имя)УстановитьФайлПараметров(Путь)ДобавитьСтандартныеКаталогиПоиска(ВложенныйКаталог = "")ДобавитьКаталогПоиска(Каталог)ОчиститьПутиПоиска()УстановитьВложенныйКаталогПоиска(ВложенныйКаталог)Отключить()/Включить()
