103 lines
3.0 KiB
PHP
103 lines
3.0 KiB
PHP
<?php
|
|
namespace PhpUnitsOfMeasure\PhysicalQuantity;
|
|
|
|
use PhpUnitsOfMeasure\AbstractPhysicalQuantity;
|
|
use PhpUnitsOfMeasure\UnitOfMeasure;
|
|
use PhpUnitsOfMeasure\HasSIUnitsTrait;
|
|
|
|
class Length extends AbstractPhysicalQuantity
|
|
{
|
|
use HasSIUnitsTrait;
|
|
|
|
protected static $unitDefinitions;
|
|
|
|
protected static function initialize()
|
|
{
|
|
// Meter
|
|
$meter = UnitOfMeasure::nativeUnitFactory('m');
|
|
$meter->addAlias('meter');
|
|
$meter->addAlias('meters');
|
|
$meter->addAlias('metre');
|
|
$meter->addAlias('metres');
|
|
static::addUnit($meter);
|
|
|
|
static::addMissingSIPrefixedUnits(
|
|
$meter,
|
|
1,
|
|
'%pm',
|
|
[
|
|
'%Pmeter',
|
|
'%Pmeters',
|
|
'%Pmetre',
|
|
'%Pmetres'
|
|
]
|
|
);
|
|
|
|
// Foot
|
|
$newUnit = UnitOfMeasure::linearUnitFactory('ft', 0.3048);
|
|
$newUnit->addAlias('foot');
|
|
$newUnit->addAlias('feet');
|
|
static::addUnit($newUnit);
|
|
|
|
// Inch
|
|
$newUnit = UnitOfMeasure::linearUnitFactory('in', 0.0254);
|
|
$newUnit->addAlias('inch');
|
|
$newUnit->addAlias('inches');
|
|
static::addUnit($newUnit);
|
|
|
|
// Mile
|
|
$newUnit = UnitOfMeasure::linearUnitFactory('mi', 1609.344);
|
|
$newUnit->addAlias('mile');
|
|
$newUnit->addAlias('miles');
|
|
static::addUnit($newUnit);
|
|
|
|
// Yard
|
|
$newUnit = UnitOfMeasure::linearUnitFactory('yd', 0.9144);
|
|
$newUnit->addAlias('yard');
|
|
$newUnit->addAlias('yards');
|
|
static::addUnit($newUnit);
|
|
|
|
// Nautical mile
|
|
$newUnit = UnitOfMeasure::linearUnitFactory('M', 1852);
|
|
$newUnit->addAlias('nautical mile');
|
|
$newUnit->addAlias('nautical miles');
|
|
$newUnit->addAlias('nmi');
|
|
$newUnit->addAlias('NM');
|
|
static::addUnit($newUnit);
|
|
|
|
// Scandinavian mil
|
|
$newUnit = UnitOfMeasure::linearUnitFactory('mil', 10000);
|
|
static::addUnit($newUnit);
|
|
|
|
// Astronomical Unit
|
|
$newUnit = UnitOfMeasure::linearUnitFactory('AU', 149597870700);
|
|
$newUnit->addAlias('au');
|
|
$newUnit->addAlias('astronomical unit');
|
|
$newUnit->addAlias('astronomical units');
|
|
static::addUnit($newUnit);
|
|
|
|
// Light Year
|
|
$newUnit = UnitOfMeasure::linearUnitFactory('ly', 9460730472580800);
|
|
$newUnit->addAlias('LY');
|
|
$newUnit->addAlias('light year');
|
|
$newUnit->addAlias('light years');
|
|
static::addUnit($newUnit);
|
|
|
|
// Light Year
|
|
$parsec = UnitOfMeasure::linearUnitFactory('pc', 3.085677581491367279E+16); // parsec == au * 648000 / pi (30856775814913672.789139379577965)
|
|
$parsec->addAlias('parsec');
|
|
$parsec->addAlias('parsecs');
|
|
static::addUnit($parsec);
|
|
|
|
static::addMissingSIPrefixedUnits(
|
|
$parsec,
|
|
1,
|
|
'%ppc',
|
|
[
|
|
'%Pparsec',
|
|
'%Pparsecs'
|
|
]
|
|
);
|
|
}
|
|
}
|