IndexBuilder
in package
Генератор индекса каталога данных: сканирует 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
$dataPath read-only
private
string
$dataPath
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
Return values
array{exact: string, categories: arraywrite()
Пишет собранный индекс в index.php каталога данных.
public
write() : void
Tags
claim()
Закрепляет код за категорией; дубликат — ошибка сборки.
private
claim(array<string, string> &$exact, string $code, string $category) : void
Parameters
- $exact : array<string, string>
- $code : string
- $category : string
Tags
resolveSignatures()
Выбирает владельца каждой сигнатуры по приоритету.
private
resolveSignatures(array<string, array<int, string>> $bySignature) : array<string, string>
Parameters
- $bySignature : array<string, array<int, string>>