DataLoader
in package
Загрузчик встроенных данных: индекс единиц и файлы категорий.
Единственная точка превращения сырых массивов данных в типизированные объекты Unit: каждое поле проходит строгую валидацию, повреждённые данные отклоняются с понятной диагностикой.
Каталог данных задаётся при создании реестра и должен быть доверенным: файлы данных — исполняемый PHP-код (см. SECURITY.md).
Table of Contents
Properties
- $path : string
Methods
- __construct() : mixed
- loadCategory() : Unit>}
- Загружает категорию: размерность, СИ-множитель базы и все единицы.
-
loadIndex()
: array{exact: string, categories: array
, signatures: array } - Загружает индекс: пакованную карту кодов, манифест категорий, сигнатуры.
- parseCategory() : Unit>}
- Разбирает и валидирует сырое определение категории (для файлов данных и программных внешних справочников {@see UnitRegistry::registerCategory()}).
- buildUnit() : Unit
- Собирает {@see Unit} из сырого определения с валидацией каждого поля.
- intMap() : array<string, int>
- Валидирует карту строка → целое (экспоненты размерности).
- nonLinearPair() : array{0: null|callable, 1: null|callable}
- Строит пару замыканий нелинейного приведения из декларативного описания.
- nullableString() : string|null
- Валидирует необязательное строковое поле.
- numericString() : string
- Валидирует числовую десятичную строку (множители и смещения).
- prefixField() : string|null
- Валидирует признак префиксуемости: null, «si», «iec» или «both».
- stringField() : string
- Валидирует строковое поле.
- stringList() : array<int, string>
- Валидирует список строк (алиасы).
- stringMap() : array<string, string>
- Валидирует карту строка → строка.
Properties
$path read-only
private
string
$path
Methods
__construct()
public
__construct(string $path) : mixed
Parameters
- $path : string
-
абсолютный путь к каталогу данных
loadCategory()
Загружает категорию: размерность, СИ-множитель базы и все единицы.
public
loadCategory(string $category, string $file) : Unit>}
СИ-множитель — отношение базовой единицы категории к когерентной СИ-единице той же размерности; через него идут кросс-категорийные конверсии (Дж ↔ Н·м).
Parameters
- $category : string
- $file : string
Tags
Return values
Unit>}loadIndex()
Загружает индекс: пакованную карту кодов, манифест категорий, сигнатуры.
public
loadIndex() : array{exact: string, categories: array, signatures: array}
Карта кодов — единая строка вида «\ncode:category\n…» вместо хэш-массива: на порядок меньше памяти при ~тысяче ключей; поиск — UnitRegistry по подстроке с кэшированием результатов.
Tags
Return values
array{exact: string, categories: arrayparseCategory()
Разбирает и валидирует сырое определение категории (для файлов данных и программных внешних справочников {@see UnitRegistry::registerCategory()}).
public
parseCategory(string $category, array<string|int, mixed> $raw) : Unit>}
Parameters
- $category : string
- $raw : array<string|int, mixed>
Tags
Return values
Unit>}buildUnit()
Собирает {@see Unit} из сырого определения с валидацией каждого поля.
private
buildUnit(string $category, Dimension $dimension, string $code, array<string|int, mixed> $definition) : Unit
Parameters
- $category : string
- $dimension : Dimension
- $code : string
- $definition : array<string|int, mixed>
Tags
Return values
UnitintMap()
Валидирует карту строка → целое (экспоненты размерности).
private
intMap(mixed $raw, string $context) : array<string, int>
Parameters
- $raw : mixed
- $context : string
Tags
Return values
array<string, int>nonLinearPair()
Строит пару замыканий нелинейного приведения из декларативного описания.
private
nonLinearPair(mixed $raw, string $code) : array{0: null|callable, 1: null|callable}
Поддерживается тип «inverse»: base = k / value (взаимно обратные величины вроде «л/100 км» ↔ «км/л»).
Parameters
- $raw : mixed
- $code : string
Tags
Return values
array{0: null|callable, 1: null|callable}nullableString()
Валидирует необязательное строковое поле.
private
nullableString(mixed $raw, string $code, string $field) : string|null
Parameters
- $raw : mixed
- $code : string
- $field : string
Tags
Return values
string|nullnumericString()
Валидирует числовую десятичную строку (множители и смещения).
private
numericString(mixed $raw, string $code, string $field) : string
Parameters
- $raw : mixed
- $code : string
- $field : string
Tags
Return values
stringprefixField()
Валидирует признак префиксуемости: null, «si», «iec» или «both».
private
prefixField(mixed $raw, string $code) : string|null
Parameters
- $raw : mixed
- $code : string
Tags
Return values
string|nullstringField()
Валидирует строковое поле.
private
stringField(mixed $raw, string $code, string $field) : string
Parameters
- $raw : mixed
- $code : string
- $field : string
Tags
Return values
stringstringList()
Валидирует список строк (алиасы).
private
stringList(mixed $raw, string $code) : array<int, string>
Parameters
- $raw : mixed
- $code : string
Tags
Return values
array<int, string>stringMap()
Валидирует карту строка → строка.
private
stringMap(mixed $raw, string $context) : array<string, string>
Parameters
- $raw : mixed
- $context : string