Unit
in package
Иммутабельное определение единицы измерения.
Линейная единица: base = value · factor. Аффинная (температурные шкалы со смещением): base = value · factor + offset. Нелинейная (топливная экономичность): пара замыканий toBase/fromBase.
Точные множители хранятся дополнительно строками (Unit::$factorString) для вычислений произвольной точности BCMath.
Дельта-единицы (Unit::$isDelta) выражают разность значений абсолютной шкалы: Δ°C складывается свободно, тогда как сумма двух абсолютных температур физически бессмысленна и отклоняется арифметикой величин.
Table of Contents
Properties
- $aliases : array<string|int, mixed>
- $category : string
- $code : string
- $deltaCode : string|null
- $dimension : Dimension
- $factor : float
- $factorString : string
- $fromBase : Closure|null
- $isDelta : bool
- $offset : float
- $offsetString : string
- $prefixable : string|null
- $symbol : string
- $system : string|null
- $toBase : Closure|null
Methods
- __construct() : mixed
- convertFromBase() : float
- Восстановление значения из базовой единицы категории (float-путь).
- convertToBase() : float
- Приведение значения к базовой единице категории (float-путь).
- displaySymbol() : string
- Отображаемый символ; при отсутствии — код единицы.
- isAffine() : bool
- Аффинная ли шкала (с ненулевым смещением): абсолютные температуры °C, °F.
- isBase() : bool
- Является ли единица базовой в своей категории (множитель 1, без смещения).
- isNonLinear() : bool
- Является ли приведение к базе нелинейным (задано замыканиями).
Properties
$aliases read-only
public
array<string|int, mixed>
$aliases
= []
$category read-only
public
string
$category
$code read-only
public
string
$code
$deltaCode read-only
public
string|null
$deltaCode
= null
$dimension read-only
public
Dimension
$dimension
$factor read-only
public
float
$factor
= 1.0
$factorString read-only
public
string
$factorString
= '1'
$fromBase read-only
public
Closure|null
$fromBase
= null
$isDelta read-only
public
bool
$isDelta
= false
$offset read-only
public
float
$offset
= 0.0
$offsetString read-only
public
string
$offsetString
= '0'
$prefixable read-only
public
string|null
$prefixable
= null
$symbol read-only
public
string
$symbol
= ''
$system read-only
public
string|null
$system
= null
$toBase read-only
public
Closure|null
$toBase
= null
Methods
__construct()
public
__construct(string $code, string $category, Dimension $dimension[, float $factor = 1.0 ][, float $offset = 0.0 ][, string $factorString = '1' ][, string $offsetString = '0' ][, null|callable(float): float $toBase = null ][, null|callable(float): float $fromBase = null ][, string $symbol = '' ][, array<int, string> $aliases = [] ][, null|string $prefixable = null ][, bool $isDelta = false ][, null|string $deltaCode = null ][, null|string $system = null ]) : mixed
Parameters
- $code : string
-
канонический код единицы («km»)
- $category : string
-
категория («length»)
- $dimension : Dimension
-
вектор физической размерности
- $factor : float = 1.0
-
множитель приведения к базовой единице категории
- $offset : float = 0.0
-
аддитивное смещение (температурные шкалы)
- $factorString : string = '1'
-
точный десятичный множитель для BCMath
- $offsetString : string = '0'
-
точное десятичное смещение для BCMath
- $toBase : null|callable(float): float = null
-
нелинейное приведение к базе
- $fromBase : null|callable(float): float = null
-
нелинейное восстановление из базы
- $symbol : string = ''
-
отображаемый символ («км²», «°C»)
- $aliases : array<int, string> = []
-
альтернативные коды и написания
- $prefixable : null|string = null
-
«si», «iec» или «both» — единица принимает префиксы
- $isDelta : bool = false
-
единица-разность абсолютной шкалы (Δ°C)
- $deltaCode : null|string = null
-
код парной дельта-единицы для абсолютной шкалы
- $system : null|string = null
-
система мер («si», «imperial», «us», «nautical», «astro», «hist_ru», «typo», «iec») — для simplify()
Tags
convertFromBase()
Восстановление значения из базовой единицы категории (float-путь).
public
convertFromBase(float $value) : float
Parameters
- $value : float
Return values
floatconvertToBase()
Приведение значения к базовой единице категории (float-путь).
public
convertToBase(float $value) : float
Parameters
- $value : float
Return values
floatdisplaySymbol()
Отображаемый символ; при отсутствии — код единицы.
public
displaySymbol() : string
Return values
stringisAffine()
Аффинная ли шкала (с ненулевым смещением): абсолютные температуры °C, °F.
public
isAffine() : bool
Return values
boolisBase()
Является ли единица базовой в своей категории (множитель 1, без смещения).
public
isBase() : bool
Return values
boolisNonLinear()
Является ли приведение к базе нелинейным (задано замыканиями).
public
isNonLinear() : bool