Einführung

Erstellung einer Maßeinheit

Bei der Erstellung einer Maßeinheit erwarten die Zend_Measure_* Methoden den Eingabe-/den Originalwert als ersten Parameter. Dieser kann ein nummerisches Argument, einen String oder Einheit, oder eine lokalisierte Zeichenkette mit definierter Einheit sein. Der zweite Parameter definiert die Art der Maßeinheit. Beide Parameter sind zwingend erforderlich. Die Sprache kann als optionaler dritter Parameter definiert werden.

Eine Maßeinheit von einer Integer oder Floatzahl erstellen

Zusätzlich zu Integerwerten können Floatwerte benutzt werden, aber » "einfache Dezimalbrüche wie 0.1 or 0.7 können nicht in Ihre binäre Entsprechung konvertiert werden ohne den Verlust von Genauigkeit," was zeitweise zu erstaunlichen Ergebnissen führt. Genauso sollten zwei Floatzahlen nicht auf Gleichheit geprüft werden.

Example #1 Erstellung einer Maßeinheit durch Integer oder Floatwerte

  1. span style="color: #808080; font-style: italic;">// Ausgabe '1234 m' (Meter)
  2. // Ausgabe '1234.7 m' (Meter)

Erstellen einer Maßeinheit aus Zeichenketten

Viele Maßeinheiten die als Eingabe einer Zend Framework Anwendung empfangen werden können nur als Zeichenketten den Klassen von Zend_Measure_* übergeben werden, wie z.B. Zahlen die in » Römischer Schreibweise geschrieben werden, oder extrem lange Binärwerte welche die Genauigkeit von PHP's natürlichen Integer und Floattypen übersteigen würden. Da Integer auch als Zeichenketten geschrieben werden können sollten, sobald die Gefahr eines Genauigkeitverlustes durch die Limits von PHP's Integer und Floatwerten besteht, stattdessen Zeichenketten verwendet werden. Zend_Measure_Number benutzt die BCMath Erweiterung um aussergewöhnliche Genauigkeit zu unterstützen, wie im gezeigen Beispiel, um die Beschränkungen von vielen PHP Funktionen wie » bin2dec() zu umgehen.

Example #2 Erstellung einer Maßeinheit durch Strings

  1. $mystring = "10010100111010111010100001011011101010001"

Maßeinheiten von lokalisierten Zeichenketten

Wenn eine Zeichenkette in lokalisierter Schreibweise eingegeben wurde, kann die richtige Interpretation nicht herausgefunden werden ohne dass das gewünschte Gebietsschema bekannt ist. Die Teilung der Dezimalziffern mit "." und die Gruppierung der Tausender mit "," ist in der Englischen Sprache üblich, aber nur in anderen Sprachen. Um mit solchen Problemen umgehen zu können, besteht bei den lokalisierten Klassen der Zend_Measure_* Familie die Möglichkeit eine Sprache oder Region anzugeben, um einen Eingabewert eindeutig zu machen und die erwartete semantische Eingabe richtig zu interpretieren.

Example #3 Lokalisierte Zeichenketten

  1. span style="color: #ff0000;">'de');
  2. $mystring = "1,234.50"// Ausgabe "1.234 m"
  3.  
  4. $mystring = "1,234.50"'en_US'// Ausgabe "1234.50 m"

Seit Zend Framework 1.7.0 unterstützt Zend_Measure auch die Verwendung eines Anwendungsweiten Gebietsschemas. Man kann ganz einfach eine Zend_Locale Instanz in der Registry setzen wie anbei gezeigt. Mit dieser Schreibweise kann man das manuelle Setzen eines Gebietsschemas für jede Instanz vergessen wenn man das selbe Gebietsschema mehrere Male verwenden will.

  1. // In der Bootstrap Datei
  2. 'de_AT''Zend_Locale', $locale);
  3.  
  4. // Irgendwo in der eigenen Anwendung

Einführung