CloudCastle UnitConvertor

Converter
in package
implements ConverterInterface

FinalYes

Конвертер единиц измерения — точка входа пакета.

Горячий путь оптимизирован pair-кэшем: любая линейная пара единиц один раз сводится к аффинной паре (множитель, слагаемое), после чего каждая конверсия — одно умножение и одно сложение без создания объектов.

Конверсия допускается между единицами одной размерности даже из разных категорий (Дж ↔ Н·м): значения проходят через когерентные СИ-множители категорий. Дельта-единицы (Δ°C) не смешиваются с абсолютными шкалами (°C).

Table of Contents

Interfaces

ConverterInterface
Конвертер единиц измерения.

Constants

ADD  : mixed = 1
MUL  : mixed = 0
Аффинная пара конверсии: [множитель, слагаемое].

Properties

$formatterInstance  : Formatter|null
$pairs  : array<string, array{0: float, 1: float}|callable(float): float>
$parserInstance  : Parser|null
$shared  : self|null
$units  : UnitRegistry

Methods

__construct()  : mixed
convert()  : float
Конвертирует значение между единицами (float-путь, максимальная скорость).
convertMany()  : array<int, float>
Конвертирует набор значений одной парой единиц.
convertPrecise()  : string
Конвертация произвольной точности (BCMath): результат — десятичная строка.
formatter()  : Formatter
Форматтер величин этого конвертера (локали из каталога данных реестра).
parse()  : Quantity
Разбирает строку «5.5 km» или составную «5 ft 3 in» в величину.
parser()  : Parser
Парсер величин этого конвертера.
quantity()  : Quantity
Создаёт величину, привязанную к этому конвертеру.
registry()  : UnitRegistry
Реестр единиц конвертера.
setShared()  : void
Подменяет общий конвертер (свой реестр в тестах и приложениях); null — сброс к встроенному.
shared()  : self
Общий конвертер по умолчанию (для статических фабрик {@see Quantity}).
toAll()  : array<string, float>
Конвертирует значение во все совместимые единицы категории или в цели.
toCompound()  : array<string, float>
Раскладывает значение на составные единицы: 5025 с → 1 ч 23 мин 45 с.
tryConvert()  : float|null
Конвертация без исключений: null при любой ошибке пакета.
tryParse()  : Quantity|null
Разбор без исключений: null при любой ошибке.
applySiPrecise()  : string
СИ-переход для точного пути: base·si₁/si₂ строками.
assertCompatible()  : void
Проверяет совместимость размерностей и согласованность дельта-статуса.
convertNonLinear()  : float
Нелинейный путь: через базовые единицы категорий и СИ-множители.
convertUnits()  : float
Конверсия по разрешённым единицам (без строкового pair-кэша).
linearPair()  : array{0: float, 1: float}
Аффинная пара линейной конверсии: result = value · mul + add.
pairSlow()  : void
Медленный путь пары: разрешение, проверка совместимости, кэширование аффинной пары или запечённого нелинейного замыкания.
precisePath()  : string
Точный расчёт: линейный BCMath-путь или float-фолбэк для нелинейных.

Constants

MUL

Аффинная пара конверсии: [множитель, слагаемое].

private mixed MUL = 0

Properties

$pairs

private array<string, array{0: float, 1: float}|callable(float): float> $pairs = []

аффинные пары и запечённые нелинейные замыкания

$shared

private static self|null $shared = null

Methods

__construct()

public __construct([null|UnitRegistry $registry = null ]) : mixed
Parameters
$registry : null|UnitRegistry = null

реестр единиц; null — встроенные данные

convert()

Конвертирует значение между единицами (float-путь, максимальная скорость).

public convert(float $value, string|Unit $from, string|Unit $to) : float
Parameters
$value : float
$from : string|Unit
$to : string|Unit
Attributes
#[Override]
Return values
float

convertMany()

Конвертирует набор значений одной парой единиц.

public convertMany(iterable<string|int, mixed> $values, string|Unit $from, string|Unit $to) : array<int, float>
Parameters
$values : iterable<string|int, mixed>
$from : string|Unit
$to : string|Unit
Attributes
#[Override]
Return values
array<int, float>

convertPrecise()

Конвертация произвольной точности (BCMath): результат — десятичная строка.

public convertPrecise(int|float|string $value, string|Unit $from, string|Unit $to[, int|null $scale = null ]) : string
Parameters
$value : int|float|string
$from : string|Unit
$to : string|Unit
$scale : int|null = null

знаков после запятой результата; null — полная шкала

Attributes
#[Override]
Return values
string

formatter()

Форматтер величин этого конвертера (локали из каталога данных реестра).

public formatter() : Formatter
Return values
Formatter

parse()

Разбирает строку «5.5 km» или составную «5 ft 3 in» в величину.

public parse(string $input) : Quantity
Parameters
$input : string
Return values
Quantity

parser()

Парсер величин этого конвертера.

public parser() : Parser
Return values
Parser

quantity()

Создаёт величину, привязанную к этому конвертеру.

public quantity(float $value, string|Unit $unit) : Quantity
Parameters
$value : float
$unit : string|Unit
Attributes
#[Override]
Return values
Quantity

setShared()

Подменяет общий конвертер (свой реестр в тестах и приложениях); null — сброс к встроенному.

public static setShared(self|null $converter) : void
Parameters
$converter : self|null

shared()

Общий конвертер по умолчанию (для статических фабрик {@see Quantity}).

public static shared() : self
Return values
self

toAll()

Конвертирует значение во все совместимые единицы категории или в цели.

public toAll(float $value, string|Unit $from[, array<string|int, mixed>|null $targets = null ]) : array<string, float>
Parameters
$value : float
$from : string|Unit
$targets : array<string|int, mixed>|null = null

целевые единицы; null — вся категория

Attributes
#[Override]
Return values
array<string, float>

код единицы → значение

toCompound()

Раскладывает значение на составные единицы: 5025 с → 1 ч 23 мин 45 с.

public toCompound(float $value, string|Unit $from, array<string|int, mixed> $targets) : array<string, float>
Parameters
$value : float
$from : string|Unit
$targets : array<string|int, mixed>

единицы разложения (крупные → мелкие)

Attributes
#[Override]
Return values
array<string, float>

код единицы → значение

tryConvert()

Конвертация без исключений: null при любой ошибке пакета.

public tryConvert(float $value, string|Unit $from, string|Unit $to) : float|null
Parameters
$value : float
$from : string|Unit
$to : string|Unit
Attributes
#[Override]
Return values
float|null

tryParse()

Разбор без исключений: null при любой ошибке.

public tryParse(string $input) : Quantity|null
Parameters
$input : string
Return values
Quantity|null

applySiPrecise()

СИ-переход для точного пути: base·si₁/si₂ строками.

private applySiPrecise(BcCalculator $bc, string $inBase, Unit $from, Unit $to) : string
Parameters
$bc : BcCalculator
$inBase : string
$from : Unit
$to : Unit
Return values
string

assertCompatible()

Проверяет совместимость размерностей и согласованность дельта-статуса.

private assertCompatible(Unit $from, Unit $to) : void
Parameters
$from : Unit
$to : Unit
Tags
throws
IncompatibleDimensionsException

при несовместимости

convertNonLinear()

Нелинейный путь: через базовые единицы категорий и СИ-множители.

private convertNonLinear(float $value, Unit $from, Unit $to) : float
Parameters
$value : float
$from : Unit
$to : Unit
Return values
float

convertUnits()

Конверсия по разрешённым единицам (без строкового pair-кэша).

private convertUnits(float $value, Unit $from, Unit $to) : float
Parameters
$value : float
$from : Unit
$to : Unit
Return values
float

linearPair()

Аффинная пара линейной конверсии: result = value · mul + add.

private linearPair(Unit $from, Unit $to) : array{0: float, 1: float}

Вывод: v·f₁ + o₁ — в базу; ·si₁/si₂ — сквозь СИ при разных категориях; (x − o₂)/f₂ — из базы цели.

Parameters
$from : Unit
$to : Unit
Return values
array{0: float, 1: float}

pairSlow()

Медленный путь пары: разрешение, проверка совместимости, кэширование аффинной пары или запечённого нелинейного замыкания.

private pairSlow(string $from, string $to) : void
Parameters
$from : string
$to : string

precisePath()

Точный расчёт: линейный BCMath-путь или float-фолбэк для нелинейных.

private precisePath(BcCalculator $bc, string $normalized, Unit $fromUnit, Unit $toUnit) : string
Parameters
$bc : BcCalculator
$normalized : string
$fromUnit : Unit
$toUnit : Unit
Return values
string
On this page

Search results