Zend_Measure-Edit.xml 9.5 KB

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