MDAllowedValueSets/src/MDUnitsSet.php

99 lines
2.6 KiB
PHP
Raw Normal View History

2020-08-06 11:08:10 +02:00
<?PHP
/**
* Contains a class for controlling the list of available units.
*
* @author Joshua Ramon Enslin <joshua@museum-digital.de>
*/
declare(strict_types = 1);
2020-08-06 11:08:10 +02:00
/**
* Class containing available units for weights, lengths etc.
*/
2020-08-29 17:21:18 +02:00
final class MDUnitsSet extends MDValueSet {
2020-08-06 11:08:10 +02:00
const UNITS_LENGTH = ['', 'm', 'dm', 'cm', 'mm'];
const UNITS_WEIGHT = ['', 't', 'kg', 'g'];
const UNITS_LENGTH_TO_MICROMETER = [
'm' => 1000000,
'dm' => 100000,
'cm' => 10000,
'mm' => 1000,
];
const UNITS_WEIGHT_TO_MILLIGRAMM = [
'm' => 1000000,
'dm' => 100000,
'cm' => 10000,
'mm' => 1000,
];
/**
* Converts a given length to micrometers.
*
* @param mixed $value Input value to convert.
* @param string $unit Length unit of the value to convert.
*
* @return float|null
*/
public static function convertLengthToMicrometer(mixed $value, string $unit):float|null {
if (!isset(self::UNITS_LENGTH_TO_MICROMETER[$unit])) return null;
try {
$number = MD_STD_IN::sanitize_float($value);
return floatval($number * self::UNITS_LENGTH_TO_MICROMETER[$unit]);
}
catch (MDgenericInvalidInputsException $e) {
return null;
}
}
/**
* Converts a given length to micrometers.
*
* @param mixed $value Input value to convert.
* @param string $unit Weight unit of the value to convert.
*
* @return float|null
*/
public static function convertWeightToMilligramm(mixed $value, string $unit):float|null {
if (!isset(self::UNITS_WEIGHT_TO_MILLIGRAMM[$unit])) return null;
try {
$number = MD_STD_IN::sanitize_float($value);
return floatval($number * self::UNITS_WEIGHT_TO_MILLIGRAMM[$unit]);
}
catch (MDgenericInvalidInputsException $e) {
return null;
}
}
/**
* Returns a translated list of length units.
*
* @param MDTlLoader $tlLoader Translation loader.
*
* @return array<string>
*/
public static function getLengthUnitsTLed(MDTlLoader $tlLoader):array {
return parent::getTlUnsortedList($tlLoader, self::UNITS_LENGTH, "units_length_set", "units_length_set");
}
/**
* Returns a translated list of weight units.
*
* @param MDTlLoader $tlLoader Translation loader.
*
* @return array<string>
*/
public static function getWeightUnitsTLed(MDTlLoader $tlLoader):array {
return parent::getTlUnsortedList($tlLoader, self::UNITS_WEIGHT, "units_weight_set", "units_weight_set");
}
2020-08-06 11:08:10 +02:00
}