Die Zend_Measure_*
Klassen bieten einen generischen und einfachen Weg
um mit Maßeinheiten zu Arbeiten. Durch Verwendung der Zend_Measure_*
Klassen können Maßeinheiten in verschiedene andere Maßeinheiten des gleichen Typs
konvertiert werden. Diese können Addiert, Subtrahiert und miteinander verglichen werden. Von
einer Eingabe in der Muttersprache eines Benutzers können die Einheiten der Maßeinheiten
automatische extrahiert werden. Eine Vielzahl an Maßeinheiten wird unterstützt.
Beispiel 578. Konvertieren von Maßeinheiten
Das folgende einführende Beispiel zeigt die automatische Konvertierung von Einheiten von Maßeinheiten. Um eine Maßeinheit zu konvertieren muß dessen Wert und Typ bekannt sein. Der Wert kann ein Integer, ein Float oder sogar eine Zeichenkette sein die eine Zahl enthält. Konvertierungen sind nur für Einheiten des gleichen Typs möglich (Masse, Fläche, Temperatur, Beschleunigung, usw.), nicht zwischen verschiedenen Typen.
$locale = new Zend_Locale('en'); $unit = new Zend_Measure_Length(100, Zend_Measure_Length::METER, $locale); // Konvertiert Meter zu Yard echo $unit->convertTo(Zend_Measure_Length::YARD);
Zend_Measure_*
enthält Unterstützung für viele unterschiedliche Arten
von Maßeinheiten. Die Arten der Maßeinheiten haben die folgende einheitliche Schreibweise:
Zend_Measure_<TYP>::NAME_DER_EINHEIT
, wobei <TYP>
identisch ist mit einer bekannten physikalischen oder nummerischen Einheit. Jede Maßeinheit
besteht aus einem Faktor für die Konvertierung und einer Darstellungseinheit. Eine
detailierte Liste kann im Kapitel Arten von
Maßeinheiten gefunden werden.
Beispiel 579. Die Maßeinheit meter
Der Meter wird für das Abmessen von Längen verwendet und kann in
der Klasse Length
gefunden werden. Um auf diese Maßeinheit zu
verweisen muß die Schreibweise Length::METER
verwendet werden. Die
Darstellungseinheit ist m.
echo Zend_Measure_Length::STANDARD; // Ausgabe 'Length::METER' echo Zend_Measure_Length::KILOMETER; // Ausgabe 'Length::KILOMETER' $unit = new Zend_Measure_Length(100,'METER'); echo $unit; // Ausgabe '100 m'