|
@@ -2,287 +2,139 @@
|
|
|
|
|
|
class Conversion {
|
|
class Conversion {
|
|
|
|
|
|
- // Acceleration
|
|
|
|
- const METRE_PER_SECOND_SQUARED = 'm/s^2';
|
|
|
|
-
|
|
|
|
- // Angle
|
|
|
|
- const TURN = 'turn';
|
|
|
|
- const RADIAN = 'rad';
|
|
|
|
- const DEGREE = 'deg';
|
|
|
|
- const GRADIAN = 'grad';
|
|
|
|
-
|
|
|
|
- // Area
|
|
|
|
- // Metric system
|
|
|
|
- const SQUARE_METRE = 'm^2';
|
|
|
|
- const HECTARE = 'ha';
|
|
|
|
- const SQUARE_KILOMETRE = 'km^2';
|
|
|
|
- // Imperial system
|
|
|
|
- const SQUARE_INCH = 'in^2';
|
|
|
|
- const SQUARE_FEET = 'ft^2';
|
|
|
|
- const SQUARE_YARD = 'yd^2';
|
|
|
|
- const ACRE = 'ac';
|
|
|
|
- const SQUARE_MILE = 'mi^2';
|
|
|
|
-
|
|
|
|
- // Storage
|
|
|
|
- const BIT = 'b';
|
|
|
|
- const BYTE = 'B';
|
|
|
|
- const KILOBIT = 'kb';
|
|
|
|
- const KILOBYTE = 'kB';
|
|
|
|
- const MEGABIT = 'Mb';
|
|
|
|
- const MEGABYTE = 'MB';
|
|
|
|
- const GIGABIT = 'Gb';
|
|
|
|
- const GIGABYTE = 'GB';
|
|
|
|
- const TERABIT = 'Tb';
|
|
|
|
- const TERABYTE = 'TB';
|
|
|
|
- const PETABIT = 'Pb';
|
|
|
|
- const PETABYTE = 'PB';
|
|
|
|
-
|
|
|
|
- // Current
|
|
|
|
- const STATAMPERE = 'statA';
|
|
|
|
- const MICROAMPERE = 'uA';
|
|
|
|
- const MILLIAMPERE = 'mA';
|
|
|
|
- const ABAMPERE = 'aA';
|
|
|
|
- const AMPERE = 'A';
|
|
|
|
- const KILOAMPERE = 'kA';
|
|
|
|
-
|
|
|
|
- // Fuel
|
|
|
|
- // Metric units
|
|
|
|
- const KILOMETRES_PER_LITRE = 'km/L';
|
|
|
|
- const LITRE_PER_100_KILOMETRES = 'L/100 km';
|
|
|
|
- // Imperial units
|
|
|
|
- const MILES_PER_GALLON = 'mpg';
|
|
|
|
- // US units
|
|
|
|
- const US_MILES_PER_GALLON = 'us mpg';
|
|
|
|
-
|
|
|
|
- // Length
|
|
|
|
- // Metric system
|
|
|
|
- const MILLIMETRE = 'mm';
|
|
|
|
- const CENTIMETRE = 'cm';
|
|
|
|
- const METRE = 'm';
|
|
|
|
- const KILOMETRE = 'km';
|
|
|
|
- // Imperial system
|
|
|
|
- const INCH = 'in';
|
|
|
|
- const FOOT = 'ft';
|
|
|
|
- const YARD = 'yd';
|
|
|
|
- const MILE = 'mi';
|
|
|
|
- // Other systems
|
|
|
|
- const NAUTICAL_MILE = 'nmi';
|
|
|
|
-
|
|
|
|
- // Mass
|
|
|
|
- // Metric system
|
|
|
|
- const MICROGRAM = 'mcg';
|
|
|
|
- const MILLIGRAM = 'mg';
|
|
|
|
- const GRAM = 'g';
|
|
|
|
- const KILOGRAM = 'kg';
|
|
|
|
- const METRIC_TON = 't';
|
|
|
|
- // Imperial system
|
|
|
|
- const OUNCE = 'oz';
|
|
|
|
- const POUND = 'lb';
|
|
|
|
- const STONE = 'st';
|
|
|
|
- const SHORT_TON = 's. t.';
|
|
|
|
- const LONG_TON = 'l. t.';
|
|
|
|
-
|
|
|
|
- // Pressure
|
|
|
|
- const PASCAL = 'Pa';
|
|
|
|
- const KILOPASCAL = 'kPa';
|
|
|
|
- const MEGAPASCAL = 'MPa';
|
|
|
|
- const BAR = 'bar';
|
|
|
|
- const MILLIMETRES_OF_MERCURY = 'mmHg';
|
|
|
|
- const ATMOSPHERE = 'atm';
|
|
|
|
- const INCHES_OF_MERCURY = 'inHg';
|
|
|
|
- const POUNDS_PER_SQUARE_INCH = 'psi';
|
|
|
|
-
|
|
|
|
- // Speed
|
|
|
|
- // Metric units
|
|
|
|
- const METRE_PER_SECOND = 'm/s';
|
|
|
|
- const KILOMETRES_PER_HOUR = 'km/h';
|
|
|
|
- // Imperial units
|
|
|
|
- const FEET_PER_SECOND = 'ft/s';
|
|
|
|
- const MILES_PER_HOUR = 'mph';
|
|
|
|
- // Other units
|
|
|
|
- const KNOT = 'kn';
|
|
|
|
-
|
|
|
|
- // Temperature
|
|
|
|
- const CELSIUS = 'C';
|
|
|
|
- const FAHRENHEIT = 'F';
|
|
|
|
- const KELVIN = 'K';
|
|
|
|
-
|
|
|
|
- // Time
|
|
|
|
- const NANOSECOND = 'ns';
|
|
|
|
- const MICROSECOND = 'us';
|
|
|
|
- const MILLISECOND = 'ms';
|
|
|
|
- const SECOND = 's';
|
|
|
|
- const MINUTE = 'min';
|
|
|
|
- const HOUR = 'hr';
|
|
|
|
- const DAY = 'd';
|
|
|
|
- const WEEK = 'wk';
|
|
|
|
- const MONTH = 'mo';
|
|
|
|
- const YEAR = 'a';
|
|
|
|
- const DECADE = 'decade';
|
|
|
|
- const CENTURY = 'century';
|
|
|
|
- const MILLENIUM = 'ka';
|
|
|
|
-
|
|
|
|
- // Voltage
|
|
|
|
- const VOLT = 'V';
|
|
|
|
- const KILOVOLT = 'KV';
|
|
|
|
-
|
|
|
|
- // Volume
|
|
|
|
- // Metric system
|
|
|
|
- const MILLILITRE = 'mL';
|
|
|
|
- const LITRE = 'L';
|
|
|
|
- const CUBIC_METRE = 'm^3';
|
|
|
|
- // Imperial system
|
|
|
|
- const GALLON = 'gal';
|
|
|
|
- const QUART = 'qt';
|
|
|
|
- const PINT = 'pt';
|
|
|
|
- const CUP = 'c';
|
|
|
|
- const TABLESPOON = 'tbsp';
|
|
|
|
- const TEASPOON = 'tsp';
|
|
|
|
- // US system
|
|
|
|
- const US_GALLON = 'us gal';
|
|
|
|
- const US_QUART = 'us qt';
|
|
|
|
- const US_PINT = 'us pt';
|
|
|
|
- const US_CUP = 'us c';
|
|
|
|
- const US_OUNCE = 'us oz';
|
|
|
|
- const US_TABLESPOON = 'us tbsp';
|
|
|
|
- const US_TEASPOON = 'us tsp';
|
|
|
|
- // Other units
|
|
|
|
- const CUBIC_INCH = 'in^3';
|
|
|
|
- const CUBIC_FOOT = 'ft^3';
|
|
|
|
-
|
|
|
|
/**
|
|
/**
|
|
* @var array
|
|
* @var array
|
|
*/
|
|
*/
|
|
protected static $conversionChart = array(
|
|
protected static $conversionChart = array(
|
|
// Acceleration
|
|
// Acceleration
|
|
- Conversion::METRE_PER_SECOND_SQUARED => 1,
|
|
|
|
|
|
+ 'METRE_PER_SECOND_SQUARED' => 1,
|
|
|
|
|
|
// Angle
|
|
// Angle
|
|
- Conversion::TURN => 6.28318531,
|
|
|
|
- Conversion::RADIAN => 1,
|
|
|
|
- Conversion::DEGREE => 0.0174532925,
|
|
|
|
- Conversion::GRADIAN => 0.015707963267949,
|
|
|
|
|
|
+ 'TURN' => 6.28318531,
|
|
|
|
+ 'RADIAN' => 1,
|
|
|
|
+ 'DEGREE' => 0.0174532925,
|
|
|
|
+ 'GRADIAN' => 0.015707963267949,
|
|
|
|
|
|
// Area
|
|
// Area
|
|
- Conversion::SQUARE_METRE => 1,
|
|
|
|
- Conversion::HECTARE => 100,
|
|
|
|
- Conversion::SQUARE_KILOMETRE => 1000000,
|
|
|
|
- Conversion::SQUARE_INCH => 0.00064516,
|
|
|
|
- Conversion::SQUARE_FEET => 0.09290304,
|
|
|
|
- Conversion::SQUARE_YARD => 0.83612736,
|
|
|
|
- Conversion::ACRE => 247.105,
|
|
|
|
- Conversion::SQUARE_MILE => 2589988.110336,
|
|
|
|
|
|
+ 'SQUARE_METRE' => 1,
|
|
|
|
+ 'HECTARE' => 100,
|
|
|
|
+ 'SQUARE_KILOMETRE' => 1000000,
|
|
|
|
+ 'SQUARE_INCH' => 0.00064516,
|
|
|
|
+ 'SQUARE_FEET' => 0.09290304,
|
|
|
|
+ 'SQUARE_YARD' => 0.83612736,
|
|
|
|
+ 'ACRE' => 247.105,
|
|
|
|
+ 'SQUARE_MILE' => 2589988.110336,
|
|
|
|
|
|
// Storage
|
|
// Storage
|
|
- Conversion::BIT => 0.00012207,
|
|
|
|
- Conversion::BYTE => 0.000976563,
|
|
|
|
- Conversion::KILOBIT => 0.125,
|
|
|
|
- Conversion::KILOBYTE => 1,
|
|
|
|
- Conversion::MEGABIT => 128,
|
|
|
|
- Conversion::MEGABYTE => 1024,
|
|
|
|
- Conversion::GIGABIT => 131072,
|
|
|
|
- Conversion::GIGABYTE => 1.049e+6,
|
|
|
|
- Conversion::TERABIT => 1.342e+8,
|
|
|
|
- Conversion::TERABYTE => 1.074e+9,
|
|
|
|
- Conversion::PETABIT => 1.374e+11,
|
|
|
|
- Conversion::PETABYTE => 1.1e+12,
|
|
|
|
|
|
+ 'BIT' => 0.00012207,
|
|
|
|
+ 'BYTE' => 0.000976563,
|
|
|
|
+ 'KILOBIT' => 0.125,
|
|
|
|
+ 'KILOBYTE' => 1,
|
|
|
|
+ 'MEGABIT' => 128,
|
|
|
|
+ 'MEGABYTE' => 1024,
|
|
|
|
+ 'GIGABIT' => 131072,
|
|
|
|
+ 'GIGABYTE' => 1.049e+6,
|
|
|
|
+ 'TERABIT' => 1.342e+8,
|
|
|
|
+ 'TERABYTE' => 1.074e+9,
|
|
|
|
+ 'PETABIT' => 1.374e+11,
|
|
|
|
+ 'PETABYTE' => 1.1e+12,
|
|
|
|
|
|
// Current
|
|
// Current
|
|
- Conversion::STATAMPERE => 3.33564e-10,
|
|
|
|
- Conversion::MICROAMPERE => 1e-06,
|
|
|
|
- Conversion::MILLIAMPERE => 0.001,
|
|
|
|
- Conversion::AMPERE => 1,
|
|
|
|
- Conversion::ABAMPERE => 10,
|
|
|
|
- Conversion::KILOAMPERE => 1000,
|
|
|
|
|
|
+ 'STATAMPERE' => 3.33564e-10,
|
|
|
|
+ 'MICROAMPERE' => 1e-06,
|
|
|
|
+ 'MILLIAMPERE' => 0.001,
|
|
|
|
+ 'AMPERE' => 1,
|
|
|
|
+ 'ABAMPERE' => 10,
|
|
|
|
+ 'KILOAMPERE' => 1000,
|
|
|
|
|
|
// Fuel
|
|
// Fuel
|
|
- Conversion::KILOMETRES_PER_LITRE => 1,
|
|
|
|
- Conversion::LITRE_PER_100_KILOMETRES => 100,
|
|
|
|
- Conversion::MILES_PER_GALLON => 0.354006,
|
|
|
|
- Conversion::US_MILES_PER_GALLON => 0.425144,
|
|
|
|
|
|
+ 'KILOMETRES_PER_LITRE' => 1,
|
|
|
|
+ 'LITRE_PER_100_KILOMETRES' => 100,
|
|
|
|
+ 'MILES_PER_GALLON' => 0.354006,
|
|
|
|
+ 'US_MILES_PER_GALLON' => 0.425144,
|
|
|
|
|
|
// Length
|
|
// Length
|
|
- Conversion::MILLIMETRE => 0.001,
|
|
|
|
- Conversion::CENTIMETRE => 0.01,
|
|
|
|
- Conversion::METRE => 1,
|
|
|
|
- Conversion::KILOMETRE => 1000,
|
|
|
|
- Conversion::INCH => 0.0254,
|
|
|
|
- Conversion::FOOT => 0.3048,
|
|
|
|
- Conversion::YARD => 0.9144,
|
|
|
|
- Conversion::MILE => 1609.34,
|
|
|
|
- Conversion::NAUTICAL_MILE => 1852,
|
|
|
|
|
|
+ 'MILLIMETRE' => 0.001,
|
|
|
|
+ 'CENTIMETRE' => 0.01,
|
|
|
|
+ 'METRE' => 1,
|
|
|
|
+ 'KILOMETRE' => 1000,
|
|
|
|
+ 'INCH' => 0.0254,
|
|
|
|
+ 'FOOT' => 0.3048,
|
|
|
|
+ 'YARD' => 0.9144,
|
|
|
|
+ 'MILE' => 1609.34,
|
|
|
|
+ 'NAUTICAL_MILE' => 1852,
|
|
|
|
|
|
// Mass
|
|
// Mass
|
|
- Conversion::MICROGRAM => 1e-7,
|
|
|
|
- Conversion::MILLIGRAM => 1e-6,
|
|
|
|
- Conversion::GRAM => 0.001,
|
|
|
|
- Conversion::KILOGRAM => 1,
|
|
|
|
- Conversion::METRIC_TON => 100,
|
|
|
|
- Conversion::OUNCE => 0.0283495,
|
|
|
|
- Conversion::POUND => 0.453592,
|
|
|
|
- Conversion::STONE => 6.35029,
|
|
|
|
- Conversion::SHORT_TON => 907.185,
|
|
|
|
- Conversion::LONG_TON => 1016.0469088,
|
|
|
|
|
|
+ 'MICROGRAM' => 1e-7,
|
|
|
|
+ 'MILLIGRAM' => 1e-6,
|
|
|
|
+ 'GRAM' => 0.001,
|
|
|
|
+ 'KILOGRAM' => 1,
|
|
|
|
+ 'METRIC_TON' => 100,
|
|
|
|
+ 'OUNCE' => 0.0283495,
|
|
|
|
+ 'POUND' => 0.453592,
|
|
|
|
+ 'STONE' => 6.35029,
|
|
|
|
+ 'SHORT_TON' => 907.185,
|
|
|
|
+ 'LONG_TON' => 1016.0469088,
|
|
|
|
|
|
// Pressure
|
|
// Pressure
|
|
- Conversion::PASCAL => 1,
|
|
|
|
- Conversion::KILOPASCAL => 1000,
|
|
|
|
- Conversion::MEGAPASCAL => 1e6,
|
|
|
|
- Conversion::BAR => 1e5,
|
|
|
|
- Conversion::MILLIMETRES_OF_MERCURY => 133.3224,
|
|
|
|
- Conversion::INCHES_OF_MERCURY => 3.386389e3,
|
|
|
|
- Conversion::POUNDS_PER_SQUARE_INCH => 6.894757e3,
|
|
|
|
- Conversion::ATMOSPHERE => 101325,
|
|
|
|
|
|
+ 'PASCAL' => 1,
|
|
|
|
+ 'KILOPASCAL' => 1000,
|
|
|
|
+ 'MEGAPASCAL' => 1e6,
|
|
|
|
+ 'BAR' => 1e5,
|
|
|
|
+ 'MILLIMETRES_OF_MERCURY' => 133.3224,
|
|
|
|
+ 'INCHES_OF_MERCURY' => 3.386389e3,
|
|
|
|
+ 'POUNDS_PER_SQUARE_INCH' => 6.894757e3,
|
|
|
|
+ 'ATMOSPHERE' => 101325,
|
|
|
|
|
|
// Speed
|
|
// Speed
|
|
- Conversion::METRE_PER_SECOND => 1,
|
|
|
|
- Conversion::KILOMETRES_PER_HOUR => 0.277778,
|
|
|
|
- Conversion::FEET_PER_SECOND => 0.3048,
|
|
|
|
- Conversion::MILES_PER_HOUR => 0.44704,
|
|
|
|
- Conversion::KNOT => 0.514444,
|
|
|
|
|
|
+ 'METRE_PER_SECOND' => 1,
|
|
|
|
+ 'KILOMETRES_PER_HOUR' => 0.277778,
|
|
|
|
+ 'FEET_PER_SECOND' => 0.3048,
|
|
|
|
+ 'MILES_PER_HOUR' => 0.44704,
|
|
|
|
+ 'KNOT' => 0.514444,
|
|
|
|
|
|
// Temperature
|
|
// Temperature
|
|
- Conversion::CELSIUS => 273.15,
|
|
|
|
- Conversion::FAHRENHEIT => 255.372,
|
|
|
|
- Conversion::KELVIN => 1,
|
|
|
|
|
|
+ 'CELSIUS' => 273.15,
|
|
|
|
+ 'FAHRENHEIT' => 255.372,
|
|
|
|
+ 'KELVIN' => 1,
|
|
|
|
|
|
// Time
|
|
// Time
|
|
- Conversion::NANOSECOND => 1e-9,
|
|
|
|
- Conversion::MICROSECOND => 1e-6,
|
|
|
|
- Conversion::MILLISECOND => 0.001,
|
|
|
|
- Conversion::SECOND => 1,
|
|
|
|
- Conversion::MINUTE => 60,
|
|
|
|
- Conversion::HOUR => 3600,
|
|
|
|
- Conversion::DAY => 86400,
|
|
|
|
- Conversion::WEEK => 604800,
|
|
|
|
- Conversion::MONTH => 2.62974e6,
|
|
|
|
- Conversion::YEAR => 3.15569e7,
|
|
|
|
- Conversion::DECADE => 3.15569e8,
|
|
|
|
- Conversion::CENTURY => 3.15569e9,
|
|
|
|
- Conversion::MILLENIUM => 3.1556926e10,
|
|
|
|
|
|
+ 'NANOSECOND' => 1e-9,
|
|
|
|
+ 'MICROSECOND' => 1e-6,
|
|
|
|
+ 'MILLISECOND' => 0.001,
|
|
|
|
+ 'SECOND' => 1,
|
|
|
|
+ 'MINUTE' => 60,
|
|
|
|
+ 'HOUR' => 3600,
|
|
|
|
+ 'DAY' => 86400,
|
|
|
|
+ 'WEEK' => 604800,
|
|
|
|
+ 'MONTH' => 2.62974e6,
|
|
|
|
+ 'YEAR' => 3.15569e7,
|
|
|
|
+ 'DECADE' => 3.15569e8,
|
|
|
|
+ 'CENTURY' => 3.15569e9,
|
|
|
|
+ 'MILLENIUM' => 3.1556926e10,
|
|
|
|
|
|
// Voltage
|
|
// Voltage
|
|
- Conversion::VOLT => 1,
|
|
|
|
- Conversion::KILOVOLT => 1000,
|
|
|
|
|
|
+ 'VOLT' => 1,
|
|
|
|
+ 'KILOVOLT' => 1000,
|
|
|
|
|
|
// Volume
|
|
// Volume
|
|
- Conversion::MILLILITRE => 1e-6,
|
|
|
|
- Conversion::LITRE => 0.001,
|
|
|
|
- Conversion::CUBIC_METRE => 1,
|
|
|
|
- Conversion::GALLON => 0.00454609,
|
|
|
|
- Conversion::QUART => 0.00113652,
|
|
|
|
- Conversion::PINT => 0.000568261,
|
|
|
|
- Conversion::TABLESPOON => 1.7758e-5,
|
|
|
|
- Conversion::TEASPOON => 5.9194e-6,
|
|
|
|
- Conversion::US_GALLON => 0.00378541,
|
|
|
|
- Conversion::US_QUART => 0.000946353,
|
|
|
|
- Conversion::US_PINT => 0.000473176,
|
|
|
|
- Conversion::US_CUP => 0.000236588,
|
|
|
|
- Conversion::US_OUNCE => 2.9574e-5,
|
|
|
|
- Conversion::US_TABLESPOON => 1.4787e-5,
|
|
|
|
- Conversion::US_TEASPOON => 4.9289e-6,
|
|
|
|
- Conversion::CUBIC_INCH => 1.6387e-5,
|
|
|
|
- Conversion::CUBIC_FOOT => 0.0283168,
|
|
|
|
|
|
+ 'MILLILITRE' => 1e-6,
|
|
|
|
+ 'LITRE' => 0.001,
|
|
|
|
+ 'CUBIC_METRE' => 1,
|
|
|
|
+ 'GALLON' => 0.00454609,
|
|
|
|
+ 'QUART' => 0.00113652,
|
|
|
|
+ 'PINT' => 0.000568261,
|
|
|
|
+ 'TABLESPOON' => 1.7758e-5,
|
|
|
|
+ 'TEASPOON' => 5.9194e-6,
|
|
|
|
+ 'US_GALLON' => 0.00378541,
|
|
|
|
+ 'US_QUART' => 0.000946353,
|
|
|
|
+ 'US_PINT' => 0.000473176,
|
|
|
|
+ 'US_CUP' => 0.000236588,
|
|
|
|
+ 'US_OUNCE' => 2.9574e-5,
|
|
|
|
+ 'US_TABLESPOON' => 1.4787e-5,
|
|
|
|
+ 'US_TEASPOON' => 4.9289e-6,
|
|
|
|
+ 'CUBIC_INCH' => 1.6387e-5,
|
|
|
|
+ 'CUBIC_FOOT' => 0.0283168,
|
|
);
|
|
);
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -365,7 +217,7 @@ class Conversion {
|
|
*/
|
|
*/
|
|
protected function getConversion($unit)
|
|
protected function getConversion($unit)
|
|
{
|
|
{
|
|
- if ( ! isset(static::$conversionChart[$unit]))
|
|
|
|
|
|
+ if ( ! isset(static::$conversionChart[strtoupper($unit)]))
|
|
{
|
|
{
|
|
throw new \Exception(sprintf(
|
|
throw new \Exception(sprintf(
|
|
'No conversation between "%s" and "%s" is defined.',
|
|
'No conversation between "%s" and "%s" is defined.',
|
|
@@ -374,7 +226,7 @@ class Conversion {
|
|
));
|
|
));
|
|
}
|
|
}
|
|
|
|
|
|
- return static::$conversionChart[$unit];
|
|
|
|
|
|
+ return static::$conversionChart[strtoupper($unit)];
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|