Zend_Measure-Edit.xml 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15157 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.measure.edit">
  5. <title>Manipulation von Maßeinheiten</title>
  6. <para>
  7. Analysieren und normalisieren von Eingaben kombiniert mit der Ausgabe in lokalisierter Schreibweise macht
  8. die Daten für Benutzer in fremden Gebietsschemata benutzbar. Viele zusätzliche Methoden existieren in den
  9. <classname>Zend_Measure_*</classname> Komponentenum diese Daten zu manipulieren und mit Ihnen zu arbeiten nachdem Sie
  10. normalisiert wurden.
  11. </para>
  12. <itemizedlist>
  13. <listitem>
  14. <para>
  15. <link linkend="zend.measure.edit.convert"><code>Konvertieren</code></link>
  16. </para>
  17. </listitem>
  18. <listitem>
  19. <para>
  20. <link linkend="zend.measure.edit.add"><code>Addieren und Subtrahieren</code></link>
  21. </para>
  22. </listitem>
  23. <listitem>
  24. <para>
  25. <link linkend="zend.measure.edit.equal"><code>Identität Vergleichen</code></link>
  26. </para>
  27. </listitem>
  28. <listitem>
  29. <para>
  30. <link linkend="zend.measure.edit.compare"><code>Werte Vergleichen</code></link>
  31. </para>
  32. </listitem>
  33. <listitem>
  34. <para>
  35. <link linkend="zend.measure.edit.changevalue"><code>Werte per Hand ändern</code></link>
  36. </para>
  37. </listitem>
  38. <listitem>
  39. <para>
  40. <link linkend="zend.measure.edit.changetype"><code>Typ per Hand ändern</code></link>
  41. </para>
  42. </listitem>
  43. </itemizedlist>
  44. <sect2 id="zend.measure.edit.convert">
  45. <title>Konvertieren</title>
  46. <para>
  47. Das warscheinlich wichtigste Feature ist die Konvertierung in verschiedene Maßeinheiten. Die
  48. Konvertierung von Maßeinheiten kann durch verwendung der Methode <code>convertTo()</code> beliebig
  49. oft durchgeführt werden. Maßeinheiten können nur in andere Einheiten des gleichen Typs (Klasse)
  50. konvertiert werden. Deswegen ist es nicht möglich z.B. eine Länge in ein Gewicht zu konvertieren,
  51. was ja schlechte Programmierpraxis und Fehler erlauben würde ohne das eine Ausnahme geworfen wird.
  52. </para>
  53. <para>
  54. Die <code>convertTo</code> Methode akzeptiert einen optionalen Parameter. Mit diesem Parameter
  55. kann eine Genauigkeit, für den zurückgegebenen Wert, definiert werden. Die Standardgenauigkeit ist
  56. '<code>2</code>'.
  57. </para>
  58. <example id="zend.measure.edit.convert.example-1">
  59. <title>Konvertieren</title>
  60. <programlisting role="php"><![CDATA[
  61. $locale = new Zend_Locale('de');
  62. $mystring = "1.234.567,89";
  63. $unit = new Zend_Measure_Weight($mystring,'POND', $locale);
  64. print "Kilo:".$unit->convertTo('KILOGRAM');
  65. // Konstanten sind eine "bessere Praxis" als Zeichenketten
  66. print "Tonne:".$unit->convertTo(Zend_Measure_Weight::TON);
  67. // define a precision for the output
  68. print "Tonne:".$unit->convertTo(Zend_Measure_Weight::TON, 3);
  69. ]]></programlisting>
  70. </example>
  71. </sect2>
  72. <sect2 id="zend.measure.edit.add">
  73. <title>Addieren und Subtrahieren</title>
  74. <para>
  75. Maßeinheiten können miteinander durch <code>add()</code> addiert und durch <code>sub()</code> subtrahiert
  76. werden. Jede Addition erzeugt als Ergebnis ein neues Objekt. Das aktuelle Objekt wird durch die Klasse
  77. nicht verändert. Das neue Objekt ist vom selben Typ die das originale Objekt. Dynamische Objekte
  78. unterstützen einen flüssigen Programmierstil, bei dem komplexe Sequenzen von Operationen geschachtelt
  79. werden können ohne das Risiko eines Nebeneffekts durch die Veränderung des Eingabe Objektes.
  80. </para>
  81. <para>
  82. <example id="zend.measure.edit.add.example-1">
  83. <title>Werte addieren</title>
  84. <programlisting role="php"><![CDATA[
  85. // Objekte definieren
  86. $unit = new Zend_Measure_Length(200, Zend_Measure_Length::CENTIMETER);
  87. $unit2 = new Zend_Measure_Length(1, Zend_Measure_Length::METER);
  88. // $unit2 zu $unit1 addieren
  89. $sum = $unit->add($unit2);
  90. echo $sum; // Ausgabe "300 cm"
  91. ]]></programlisting>
  92. </example>
  93. </para>
  94. <note>
  95. <title>Automatische Konvertierung</title>
  96. <para>
  97. Beim Addieren eines Objektes zu einem anderen wird dieses automatisch in die richtige Einheit
  98. konvertiert. Es ist nicht notwendig
  99. <link linkend="zend.measure.edit.convert"><code>convertTo()</code></link> aufzurufen bevor
  100. unterschiedliche Einheiten addiert werden.
  101. </para>
  102. </note>
  103. <para>
  104. <example id="zend.measure.edit.add.example-2">
  105. <title>Subtrahieren</title>
  106. <para>
  107. Das Subtrahieren von Maßeinheiten funktioniert genauso wie das Addieren.
  108. </para>
  109. <programlisting role="php"><![CDATA[
  110. // Objekte definieren
  111. $unit = new Zend_Measure_Length(200, Zend_Measure_Length::CENTIMETER);
  112. $unit2 = new Zend_Measure_Length(1, Zend_Measure_Length::METER);
  113. // $unit2 von $unit subtrahieren
  114. $sum = $unit->sub($unit2);
  115. echo $sum;
  116. ]]></programlisting>
  117. </example>
  118. </para>
  119. </sect2>
  120. <sect2 id="zend.measure.edit.equal">
  121. <title>Identität Vergleichen</title>
  122. <para>
  123. Maßeinheiten können genauso verglichen werden, aber ohne automatische Konvertierung. Das bedeutet das
  124. <code>equals()</code> nur dann <code>TRUE</code> zurückgibt wenn beide, sowohl der Wert als auch
  125. die Einheit identisch sind.
  126. </para>
  127. <para>
  128. <example id="zend.measure.edit.equal.example-1">
  129. <title>Unterschiedliche Maßeinheiten</title>
  130. <programlisting role="php"><![CDATA[
  131. // Maßeinheiten definieren
  132. $unit = new Zend_Measure_Length(100, Zend_Measure_Length::CENTIMETER);
  133. $unit2 = new Zend_Measure_Length(1, Zend_Measure_Length::METER);
  134. if ($unit->equals($unit2)) {
  135. print "Beide Maßeinheiten sind identisch";
  136. } else {
  137. print "Das sind unterschiedliche Maßeinheiten";
  138. }
  139. ]]></programlisting>
  140. </example>
  141. <example id="zend.measure.edit.equal.example-2">
  142. <title>Identische Maßeinheiten</title>
  143. <programlisting role="php"><![CDATA[
  144. // Maßeinheiten definieren
  145. $unit = new Zend_Measure_Length(100, Zend_Measure_Length::CENTIMETER);
  146. $unit2 = new Zend_Measure_Length(1, Zend_Measure_Length::METER);
  147. $unit2->setType(Zend_Measure_Length::CENTIMETER);
  148. if ($unit->equals($unit2)) {
  149. print "Beide Maßeinheiten sind identisch";
  150. } else {
  151. print "Das sind unterschiedliche Maßeinheiten";
  152. }
  153. ]]></programlisting>
  154. </example>
  155. </para>
  156. </sect2>
  157. <sect2 id="zend.measure.edit.compare">
  158. <title>Werte Vergleichen</title>
  159. <para>
  160. Um herauszufinden ob eine Maßeinheite kleiner oder größer als eine andere ist kann <code>compare()</code>
  161. verwendet werden, was 0, -1 oder 1 zurückgibt, abhängig von der Differenz zwischen den zwei Objekten.
  162. Identische Maßeinheiten geben 0 zurück, kleinere einen negativen, und größere einen positiven Wert.
  163. </para>
  164. <para>
  165. <example id="zend.measure.edit.compare.example-1">
  166. <title>Differenz</title>
  167. <programlisting role="php"><![CDATA[
  168. $unit = new Zend_Measure_Length(100, Zend_Measure_Length::CENTIMETER);
  169. $unit2 = new Zend_Measure_Length(1, Zend_Measure_Length::METER);
  170. $unit3 = new Zend_Measure_Length(1.2, Zend_Measure_Length::METER);
  171. print "Gleich:".$unit2->compare($unit);
  172. print "Kleiner:".$unit2->compare($unit3);
  173. print "Größer:".$unit3->compare($unit2);
  174. ]]></programlisting>
  175. </example>
  176. </para>
  177. </sect2>
  178. <sect2 id="zend.measure.edit.changevalue">
  179. <title>Werte per Hand ändern</title>
  180. <para>
  181. Um den Wert einer Maßeinheit explizit zu Ändern, kann <code>setValue()</code> verwendet werden um
  182. den aktuellen Wert zu überschreiben. Die Parameter sind identisch mit denen des Konstruktors.
  183. </para>
  184. <para>
  185. <example id="zend.measure.edit.changevalue.example-1">
  186. <title>Verändern eines Wertes</title>
  187. <programlisting role="php"><![CDATA[
  188. $locale = new Zend_Locale('de_AT');
  189. $unit = new Zend_Measure_Length(1,Zend_Measure_Length::METER);
  190. $unit->setValue(1.2);
  191. echo $unit;
  192. $unit->setValue(1.2, Zend_Measure_Length::KILOMETER);
  193. echo $unit;
  194. $unit->setValue("1.234,56", Zend_Measure_Length::MILLIMETER,$locale);
  195. echo $unit;
  196. ]]></programlisting>
  197. </example>
  198. </para>
  199. </sect2>
  200. <sect2 id="zend.measure.edit.changetype">
  201. <title>Typ per Hand ändern</title>
  202. <para>
  203. Um den Typ einer Maßeinheit ohne den Wert zu verändern kann <code>setType()</code> verwendet werden.
  204. </para>
  205. <example id="zend.measure.edit.changetype.example-1">
  206. <title>Verändern des Typs</title>
  207. <programlisting role="php"><![CDATA[
  208. $unit = new Zend_Measure_Length(1,Zend_Measure_Length::METER);
  209. echo $unit; // Ausgabe "1 m"
  210. $unit->setType(Zend_Measure_Length::KILOMETER);
  211. echo $unit; // Ausgabe "1000 km"
  212. ]]></programlisting>
  213. </example>
  214. </sect2>
  215. </sect1>
  216. <!--
  217. vim:se ts=4 sw=4 et:
  218. -->