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.

uml diagram

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.

uml diagram

Jedes Einheiten-System besitzt ein Modell. Dieses Modell stell zum einen die Einheiten und zum anderen den Konverter zum umrechnen von Einheiten bereit.

uml diagram

Dimension

Einheiten können zu Dimensionen zusammengefasst werden. Dimensionen kann man auch als Einheitenart oder -klasse betrachten.

uml diagram

Ü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.

uml diagram

$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.