| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.measure.edit">
- <title>Manipulation von Maßeinheiten</title>
- <para>
- Analysieren und normalisieren von Eingaben kombiniert mit der Ausgabe in lokalisierter
- Schreibweise macht die Daten für Benutzer in fremden Gebietsschemata benutzbar. Viele
- zusätzliche Methoden existieren in den <classname>Zend_Measure_*</classname> Komponentenum
- diese Daten zu manipulieren und mit Ihnen zu arbeiten nachdem Sie normalisiert wurden.
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <link linkend="zend.measure.edit.convert">Konvertieren</link>
- </para>
- </listitem>
- <listitem>
- <para>
- <link linkend="zend.measure.edit.add">Addieren und Subtrahieren</link>
- </para>
- </listitem>
- <listitem>
- <para>
- <link linkend="zend.measure.edit.equal">Identität Vergleichen</link>
- </para>
- </listitem>
- <listitem>
- <para>
- <link linkend="zend.measure.edit.compare">Werte Vergleichen</link>
- </para>
- </listitem>
- <listitem>
- <para>
- <link linkend="zend.measure.edit.changevalue">Werte per Hand ändern</link>
- </para>
- </listitem>
- <listitem>
- <para>
- <link linkend="zend.measure.edit.changetype">Typ per Hand ändern</link>
- </para>
- </listitem>
- </itemizedlist>
- <sect2 id="zend.measure.edit.convert">
- <title>Konvertieren</title>
- <para>
- Das warscheinlich wichtigste Feature ist die Konvertierung in verschiedene Maßeinheiten.
- Die Konvertierung von Maßeinheiten kann durch verwendung der Methode
- <methodname>convertTo()</methodname> beliebig oft durchgeführt werden. Maßeinheiten
- können nur in andere Einheiten des gleichen Typs (Klasse) konvertiert werden. Deswegen
- ist es nicht möglich z.B. eine Länge in ein Gewicht zu konvertieren, was ja schlechte
- Programmierpraxis und Fehler erlauben würde ohne das eine Ausnahme geworfen wird.
- </para>
- <para>
- Die <methodname>convertTo()</methodname> Methode akzeptiert einen optionalen Parameter.
- Mit diesem Parameter kann eine Genauigkeit, für den zurückgegebenen Wert, definiert
- werden. Die Standardgenauigkeit ist '2'.
- </para>
- <example id="zend.measure.edit.convert.example-1">
- <title>Konvertieren</title>
- <programlisting language="php"><![CDATA[
- $locale = new Zend_Locale('de');
- $mystring = "1.234.567,89";
- $unit = new Zend_Measure_Weight($mystring,'POND', $locale);
- print "Kilo:".$unit->convertTo('KILOGRAM');
- // Konstanten sind eine "bessere Praxis" als Zeichenketten
- print "Tonne:".$unit->convertTo(Zend_Measure_Weight::TON);
- // define a precision for the output
- print "Tonne:".$unit->convertTo(Zend_Measure_Weight::TON, 3);
- ]]></programlisting>
- </example>
- </sect2>
- <sect2 id="zend.measure.edit.add">
- <title>Addieren und Subtrahieren</title>
- <para>
- Maßeinheiten können miteinander durch <methodname>add()</methodname> addiert und durch
- <methodname>sub()</methodname> subtrahiert werden. Das Ergebnis ist vom selben Typ die
- das originale Objekt. Dynamische Objekte unterstützen einen flüssigen Programmierstil,
- bei dem komplexe Sequenzen von Operationen geschachtelt werden können ohne das Risiko
- eines Nebeneffekts durch die Veränderung des Eingabe Objektes.
- </para>
- <para>
- <example id="zend.measure.edit.add.example-1">
- <title>Werte addieren</title>
- <programlisting language="php"><![CDATA[
- // Objekte definieren
- $unit = new Zend_Measure_Length(200, Zend_Measure_Length::CENTIMETER);
- $unit2 = new Zend_Measure_Length(1, Zend_Measure_Length::METER);
- // $unit2 zu $unit1 addieren
- $sum = $unit->add($unit2);
- echo $sum; // Ausgabe "300 cm"
- ]]></programlisting>
- </example>
- </para>
- <note>
- <title>Automatische Konvertierung</title>
- <para>
- Beim Addieren eines Objektes zu einem anderen wird dieses automatisch in die
- richtige Einheit konvertiert. Es ist nicht notwendig <link
- linkend="zend.measure.edit.convert"><methodname>convertTo()</methodname></link>
- aufzurufen bevor unterschiedliche Einheiten addiert werden.
- </para>
- </note>
- <para>
- <example id="zend.measure.edit.add.example-2">
- <title>Subtrahieren</title>
- <para>
- Das Subtrahieren von Maßeinheiten funktioniert genauso wie das Addieren.
- </para>
- <programlisting language="php"><![CDATA[
- // Objekte definieren
- $unit = new Zend_Measure_Length(200, Zend_Measure_Length::CENTIMETER);
- $unit2 = new Zend_Measure_Length(1, Zend_Measure_Length::METER);
- // $unit2 von $unit subtrahieren
- $sum = $unit->sub($unit2);
- echo $sum;
- ]]></programlisting>
- </example>
- </para>
- </sect2>
- <sect2 id="zend.measure.edit.equal">
- <title>Identität Vergleichen</title>
- <para>
- Maßeinheiten können genauso verglichen werden, aber ohne automatische Konvertierung. Das
- bedeutet das <methodname>equals()</methodname> nur dann <constant>TRUE</constant>
- zurückgibt wenn beide, sowohl der Wert als auch die Einheit identisch sind.
- </para>
- <para>
- <example id="zend.measure.edit.equal.example-1">
- <title>Unterschiedliche Maßeinheiten</title>
- <programlisting language="php"><![CDATA[
- // Maßeinheiten definieren
- $unit = new Zend_Measure_Length(100, Zend_Measure_Length::CENTIMETER);
- $unit2 = new Zend_Measure_Length(1, Zend_Measure_Length::METER);
- if ($unit->equals($unit2)) {
- print "Beide Maßeinheiten sind identisch";
- } else {
- print "Das sind unterschiedliche Maßeinheiten";
- }
- ]]></programlisting>
- </example>
- <example id="zend.measure.edit.equal.example-2">
- <title>Identische Maßeinheiten</title>
- <programlisting language="php"><![CDATA[
- // Maßeinheiten definieren
- $unit = new Zend_Measure_Length(100, Zend_Measure_Length::CENTIMETER);
- $unit2 = new Zend_Measure_Length(1, Zend_Measure_Length::METER);
- $unit2->setType(Zend_Measure_Length::CENTIMETER);
- if ($unit->equals($unit2)) {
- print "Beide Maßeinheiten sind identisch";
- } else {
- print "Das sind unterschiedliche Maßeinheiten";
- }
- ]]></programlisting>
- </example>
- </para>
- </sect2>
- <sect2 id="zend.measure.edit.compare">
- <title>Werte Vergleichen</title>
- <para>
- Um herauszufinden ob eine Maßeinheite kleiner oder größer als eine andere ist kann
- <methodname>compare()</methodname> verwendet werden, was 0, -1 oder 1 zurückgibt,
- abhängig von der Differenz zwischen den zwei Objekten. Identische Maßeinheiten geben 0
- zurück, kleinere einen negativen, und größere einen positiven Wert.
- </para>
- <para>
- <example id="zend.measure.edit.compare.example-1">
- <title>Differenz</title>
- <programlisting language="php"><![CDATA[
- $unit = new Zend_Measure_Length(100, Zend_Measure_Length::CENTIMETER);
- $unit2 = new Zend_Measure_Length(1, Zend_Measure_Length::METER);
- $unit3 = new Zend_Measure_Length(1.2, Zend_Measure_Length::METER);
- print "Gleich:".$unit2->compare($unit);
- print "Kleiner:".$unit2->compare($unit3);
- print "Größer:".$unit3->compare($unit2);
- ]]></programlisting>
- </example>
- </para>
- </sect2>
- <sect2 id="zend.measure.edit.changevalue">
- <title>Werte per Hand ändern</title>
- <para>
- Um den Wert einer Maßeinheit explizit zu Ändern, kann
- <methodname>setValue()</methodname> verwendet werden um den aktuellen Wert zu
- überschreiben. Die Parameter sind identisch mit denen des Konstruktors.
- </para>
- <para>
- <example id="zend.measure.edit.changevalue.example-1">
- <title>Verändern eines Wertes</title>
- <programlisting language="php"><![CDATA[
- $locale = new Zend_Locale('de_AT');
- $unit = new Zend_Measure_Length(1,Zend_Measure_Length::METER);
- $unit->setValue(1.2);
- echo $unit;
- $unit->setValue(1.2, Zend_Measure_Length::KILOMETER);
- echo $unit;
- $unit->setValue("1.234,56", Zend_Measure_Length::MILLIMETER,$locale);
- echo $unit;
- ]]></programlisting>
- </example>
- </para>
- </sect2>
- <sect2 id="zend.measure.edit.changetype">
- <title>Typ per Hand ändern</title>
- <para>
- Um den Typ einer Maßeinheit ohne den Wert zu verändern kann
- <methodname>setType()</methodname> verwendet werden.
- </para>
- <example id="zend.measure.edit.changetype.example-1">
- <title>Verändern des Typs</title>
- <programlisting language="php"><![CDATA[
- $unit = new Zend_Measure_Length(1,Zend_Measure_Length::METER);
- echo $unit; // Ausgabe "1 m"
- $unit->setType(Zend_Measure_Length::KILOMETER);
- echo $unit; // Ausgabe "1000 km"
- ]]></programlisting>
- </example>
- </sect2>
- </sect1>
|