CloudCastle UnitConvertor

DataLoader
in package

FinalYes

Загрузчик встроенных данных: индекс единиц и файлы категорий.

Единственная точка превращения сырых массивов данных в типизированные объекты 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

Methods

__construct()

public __construct(string $path) : mixed
Parameters
$path : string

абсолютный путь к каталогу данных

loadCategory()

Загружает категорию: размерность, СИ-множитель базы и все единицы.

public loadCategory(string $category, string $file) : Unit>}

СИ-множитель — отношение базовой единицы категории к когерентной СИ-единице той же размерности; через него идут кросс-категорийные конверсии (Дж ↔ Н·м).

Parameters
$category : string
$file : string
Tags
throws
RegistryException

при повреждённых данных

Return values
Unit>}

loadIndex()

Загружает индекс: пакованную карту кодов, манифест категорий, сигнатуры.

public loadIndex() : array{exact: string, categories: array, signatures: array}

Карта кодов — единая строка вида «\ncode:category\n…» вместо хэш-массива: на порядок меньше памяти при ~тысяче ключей; поиск — UnitRegistry по подстроке с кэшированием результатов.

Tags
throws
RegistryException

при отсутствующем или повреждённом индексе

Return values
array{exact: string, categories: array, signatures: array}

parseCategory()

Разбирает и валидирует сырое определение категории (для файлов данных и программных внешних справочников {@see UnitRegistry::registerCategory()}).

public parseCategory(string $category, array<string|int, mixed> $raw) : Unit>}
Parameters
$category : string
$raw : array<string|int, mixed>
Tags
throws
RegistryException

при повреждённых данных

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
throws
RegistryException

при некорректном поле

Return values
Unit

intMap()

Валидирует карту строка → целое (экспоненты размерности).

private intMap(mixed $raw, string $context) : array<string, int>
Parameters
$raw : mixed
$context : string
Tags
throws
RegistryException

при нарушении формата

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
throws
RegistryException

при неизвестном типе описания

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
throws
RegistryException

при некорректном значении

Return values
string|null

numericString()

Валидирует числовую десятичную строку (множители и смещения).

private numericString(mixed $raw, string $code, string $field) : string
Parameters
$raw : mixed
$code : string
$field : string
Tags
throws
RegistryException

при нечисловом значении

Return values
string

prefixField()

Валидирует признак префиксуемости: null, «si», «iec» или «both».

private prefixField(mixed $raw, string $code) : string|null
Parameters
$raw : mixed
$code : string
Tags
throws
RegistryException

при недопустимом значении

Return values
string|null

stringField()

Валидирует строковое поле.

private stringField(mixed $raw, string $code, string $field) : string
Parameters
$raw : mixed
$code : string
$field : string
Tags
throws
RegistryException

при нестроковом значении

Return values
string

stringList()

Валидирует список строк (алиасы).

private stringList(mixed $raw, string $code) : array<int, string>
Parameters
$raw : mixed
$code : string
Tags
throws
RegistryException

при нарушении формата

Return values
array<int, string>

stringMap()

Валидирует карту строка → строка.

private stringMap(mixed $raw, string $context) : array<string, string>
Parameters
$raw : mixed
$context : string
Tags
throws
RegistryException

при нарушении формата

Return values
array<string, string>
On this page

Search results