Messgrößen¶
Die Klassen im Namespace \Alvine\Measure
stellen Methoden und Konstanten
für den Umgang mit Messgrößen, Maßsystemen und deren Berechnung bereit.
Einheiten¶
Einheiten werden mit der Unit
-Klasse abgebildet und repräsentieren Maßeinheiten wie
Kg, Sekunde, Liter oder Meter. Eindeutige Größen haben unterschiedliche Einheiten
und es besteht zwischen Ihnen meistens kein Zusammenhang.
Für SI-Einheiten existieren Methoden um die Einheiten zu erstellen. In dem Beispiel wird auf definierte SI-Einheiten zugegriffen.
\Alvine\Measure\SI::meter();
\Alvine\Measure\SI::candela();
\Alvine\Measure\SI::kilogram();
\Alvine\Measure\SI::kelvin();
Im folgenden Beispiel wird eine eigene Längen-Einheit [myl]
definiert.
$mylength=new \Alvine\Measure\BaseUnit("myl");
echo $mylength->getDimension();
// -> [myl]
Mehrere Einheiten sind in einem Einheiten-System zusammengefasst. Das bekannteste Einheitensystem ist das SI-System.
Jedes Einheiten-System besitzt ein Modell. Dieses Modell stell zum einen die Einheiten und zum anderen den Konverter zum umrechnen von Einheiten bereit.
Dimension¶
Einheiten können zu Dimensionen zusammengefasst werden. Dimensionen kann man auch als Einheitenart oder -klasse betrachten.
Über die Methode \Alvine\Measure\Dimension::setModel($model)
muss ein Modell
gesetzt werden. Es kann immer nur ein aktives Modell gesetzt sein, wir kein
Modell gesetzt so wird das Standard-SI-Modell verwendet.
Ein Modell muss das Interface Alvine\Measure\Model
implementieren und die
Dimension und einen Konverter zurückliefern.
Mit Hilfe des Konverters kann man innerhalb des Einheitesystems umrechnungen vornehmen.
Im dem folgenden Beispiel werden Meilen in Kilometer umgerechnet. Dazu wird ein Konverter benutzt.
Für beide Größen werden in der Methode \Alvine\Measure\Unit::getConverterTo()
die Dimensionen
geholt und über die Demensionen der Konverter zur Umrechnung.
// Längeneinheit Meter
$meter=\Alvine\Measure\SI::METER();
// Meile als Teiler von Metern
$mile=$meter->times(1609344)->divide(1000);
// Konverter Meilen nach Meter
$mileToKilometer=$mile->getConverterTo(\Alvine\Measure\MetricPrefix::kilo($meter));
// Zu berechnende Meilen
$distanceInMiles=23.0;
$distanceInKilometers=$mileToKilometer->convert($distanceInMiles);
// Ausgabe
echo $distanceInKilometers;
// -> 37.014912
Präfixe¶
Die Klasse MetricPrefix
stellt statische Methoden
zur Darstellung von Größenordnungen von Einheiten bereit.
$meter=\Alvine\Measure\SI::METER();
$kilometer=\Alvine\Measure\MetricPrefix::kilo($meter);
echo (string) $kilometer->getDimension();
// -> [L]
echo (string) $kilometer;
// -> (m)*1000
Weitere Details können hier nachgelesen werden.