CloudCastle UnitConvertor

IndexBuilder
in package

FinalYes

Генератор индекса каталога данных: сканирует units/*.php и собирает index.php — карту кодов и алиасов, манифест категорий, сигнатуры размерностей.

Используется пакетом для встроенных данных и пользователями для собственных внешних справочников (UnitRegistry::attachSource()):

(new IndexBuilder('/path/to/my-units'))->write();
$registry->attachSource('/path/to/my-units');

Дубликат кода между категориями — ошибка сборки: единица разрешима только однозначно.

Table of Contents

Constants

SIGNATURE_PRIORITY  : mixed = ['length', 'mass', 'time', 'temperature', 'area...
Приоритет владения сигнатурой размерности при совпадении (первый в списке выигрывает): энергия предпочтительнее момента силы, частота — активности радионуклида, поглощённая доза — эквивалентной.

Properties

$dataPath  : string

Methods

__construct()  : mixed
build()  : array{exact: string, categories: array, signatures: array}
Собирает индекс из файлов категорий.
write()  : void
Пишет собранный индекс в index.php каталога данных.
claim()  : void
Закрепляет код за категорией; дубликат — ошибка сборки.
resolveSignatures()  : array<string, string>
Выбирает владельца каждой сигнатуры по приоритету.

Constants

SIGNATURE_PRIORITY

Приоритет владения сигнатурой размерности при совпадении (первый в списке выигрывает): энергия предпочтительнее момента силы, частота — активности радионуклида, поглощённая доза — эквивалентной.

private mixed SIGNATURE_PRIORITY = ['length', 'mass', 'time', 'temperature', 'area', 'volume', 'speed', 'acceleration', 'angle', 'angle_solid', 'pressure', 'energy', 'power', 'force', 'frequency', 'angular_speed', 'data', 'data_rate', 'fuel_economy', 'density', 'electric_current', 'voltage', 'resistance', 'conductance', 'capacitance', 'inductance', 'charge', 'magnetic_flux', 'magnetic_flux_density', 'luminous_intensity', 'luminous_flux', 'illuminance', 'luminance', 'radioactivity', 'absorbed_dose', 'equivalent_dose', 'exposure_dose', 'amount', 'molar_mass', 'molar_concentration', 'catalytic_activity', 'torque', 'dynamic_viscosity', 'kinematic_viscosity', 'surface_tension', 'heat_capacity', 'specific_heat', 'flow', 'mass_flow', 'electric_field', 'thermal_conductivity', 'heat_flux', 'heat_transfer', 'specific_energy', 'energy_density', 'linear_density', 'surface_density', 'momentum', 'wavenumber', 'resolution', 'dose_rate', 'resistivity', 'conductivity_electric', 'luminous_efficacy', 'angular_acceleration', 'jerk', 'permeability', 'permittivity', 'magnetic_field_strength', 'angular_momentum', 'action', 'moment_of_inertia', 'specific_volume', 'mass_concentration', 'luminous_energy', 'luminous_exposure', 'radiant_intensity', 'radiance', 'compressibility', 'thermal_expansion', 'thermal_resistance', 'thermal_insulance', 'power_density', 'specific_power', 'current_density', 'radiant_exposure', 'scalar']

Properties

Methods

__construct()

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

build()

Собирает индекс из файлов категорий.

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

Карта кодов пакуется в строку «\ncode:category\n…» — компактный формат для UnitRegistry (см. DataLoader::loadIndex()).

Tags
throws
RegistryException

при дубликатах кодов или повреждённых данных

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

write()

Пишет собранный индекс в index.php каталога данных.

public write() : void
Tags
throws
RegistryException

при дубликатах кодов или ошибке записи

claim()

Закрепляет код за категорией; дубликат — ошибка сборки.

private claim(array<string, string> &$exact, string $code, string $category) : void
Parameters
$exact : array<string, string>
$code : string
$category : string
Tags
throws
RegistryException

при дубликате кода

resolveSignatures()

Выбирает владельца каждой сигнатуры по приоритету.

private resolveSignatures(array<string, array<int, string>> $bySignature) : array<string, string>
Parameters
$bySignature : array<string, array<int, string>>
Return values
array<string, string>
On this page

Search results