Zend_Measure-Edit.xml 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 17133 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.measure.edit">
  5. <title>Manipuler des mesures</title>
  6. <para>
  7. L'analyse et la normalisation de l'entrée, combinées avec la récupération suivant les
  8. notations régionalisées rend des données accessibles aux utilisateurs dans différentes
  9. régions. Beaucoup de méthodes additionnelles existent dans les composants
  10. <classname>Zend_Measure_*</classname> pour manipuler et travailler ces données, après
  11. qu'elles aient été normalisées.
  12. </para>
  13. <itemizedlist>
  14. <listitem>
  15. <para><link linkend="zend.measure.edit.convert"><code>Convertir</code></link></para>
  16. </listitem>
  17. <listitem>
  18. <para>
  19. <link linkend="zend.measure.edit.add"><code>Ajouter et
  20. soustraire</code></link>
  21. </para>
  22. </listitem>
  23. <listitem>
  24. <para>
  25. <link linkend="zend.measure.edit.equal"><code>Comparer avec un
  26. booléen</code></link>
  27. </para>
  28. </listitem>
  29. <listitem>
  30. <para>
  31. <link linkend="zend.measure.edit.compare"><code>Comparer "plus/moins grand
  32. que"</code></link>
  33. </para>
  34. </listitem>
  35. <listitem>
  36. <para>
  37. <link linkend="zend.measure.edit.changevalue"><code>Changer manuellement des
  38. valeurs</code></link>
  39. </para>
  40. </listitem>
  41. <listitem>
  42. <para>
  43. <link linkend="zend.measure.edit.changetype"><code>Changer manuellement de
  44. type</code></link>
  45. </para>
  46. </listitem>
  47. </itemizedlist>
  48. <sect2 id="zend.measure.edit.convert">
  49. <title>Convertir</title>
  50. <para>
  51. Le dispositif le plus important est probablement la conversion dans différentes
  52. unités de la mesure. La conversion d'une unité peut être faite à tout moment en
  53. utilisant la méthode <methodname>convertTo()</methodname>. Des unités de mesure peuvent seulement
  54. être converties en d'autres unités du même type (classe). Par conséquent, il n'est pas
  55. possible de convertir (par exemple : une longueur en poids), qui encouragerait des
  56. pratiques de programmation pauvres et entraînerait la propagation d'erreurs sans lever
  57. d'exception.
  58. </para>
  59. <para>
  60. La méthode <code>convertTo</code> accepte un paramètre facultatif. Avec ce
  61. paramètre vous pouvez définir une précision pour l'élément retourné. La précision par
  62. défaut est "<code>2</code>".
  63. </para>
  64. <example id="zend.measure.edit.convert.example-1">
  65. <title>Convertir</title>
  66. <programlisting language="php"><![CDATA[
  67. $locale = new Zend_Locale('de');
  68. $machaine = "1.234.567,89";
  69. $unite = new Zend_Measure_Weight($machaine,'POND', $locale);
  70. print "Kilo : ".$unite->convertTo('KILOGRAM');
  71. // affiche "Kilo : 617283.945 kg"
  72. // l'utilisation de constantes est considérée comme
  73. // une meilleure pratique que les chaînes
  74. print "Tonne : ".$unite->convertTo(Zend_Measure_Weight::TON);
  75. // affiche "Tonne : 617.283945 t"
  76. // définition de la précision pour l'affichage
  77. print "Tonne :".$unit->convertTo(Zend_Measure_Weight::TON, 3);
  78. ]]></programlisting>
  79. </example>
  80. </sect2>
  81. <sect2 id="zend.measure.edit.add">
  82. <title>Ajouter et soustraire</title>
  83. <para>
  84. Les mesures peuvent être ajoutées en utilisant <methodname>add()</methodname> et soustraites
  85. en utilisant <methodname>sub()</methodname>. Chaque addition créera un nouvel objet pour le
  86. résultat. L'objet courant ne sera jamais changé par la classe. Le nouvel objet sera du
  87. même type que l'objet de début. Les objets dynamiques supportent un modèle fluide de
  88. programmation, où des ordres complexes d'opération peuvent être imbriqués sans risque
  89. d'effets secondaires changeant les objets d'entrée.
  90. </para>
  91. <para>
  92. <example id="zend.measure.edit.add.example-1">
  93. <title>Ajouter des mesures</title>
  94. <programlisting language="php"><![CDATA[
  95. // Définition des objets
  96. $unite1 = new Zend_Measure_Length(200, Zend_Measure_Length::CENTIMETER);
  97. $unite2 = new Zend_Measure_Length(1, Zend_Measure_Length::METER);
  98. // ajouter l'$unite2 à l'$unite1
  99. $somme = $unite1->add($unite2);
  100. echo $somme; // affiche "300 cm"
  101. ]]></programlisting>
  102. </example>
  103. </para>
  104. <note>
  105. <title>Conversion automatique</title>
  106. <para>
  107. Ajouter un objet à l'autre le convertira automatiquement dans l'unité
  108. correcte. Il n'est pas nécessaire d'appeler <link
  109. linkend="zend.measure.edit.convert"><methodname>convertTo()</methodname></link> avant d'ajouter
  110. des unités différentes.
  111. </para>
  112. </note>
  113. <para>
  114. <example id="zend.measure.edit.add.example-2">
  115. <title>Soustraire des mesures</title>
  116. <para>La soustraction des mesures fonctionne comme l'addition.</para>
  117. <programlisting language="php"><![CDATA[
  118. // Définition des objets
  119. $unite1 = new Zend_Measure_Length(200, Zend_Measure_Length::CENTIMETER);
  120. $unite2 = new Zend_Measure_Length(1, Zend_Measure_Length::METER);
  121. // soustriare l'$unite2 de l'$unite1
  122. $somme = $unite1->sub($unite2);
  123. echo $somme; // affiche "100 cm"
  124. ]]></programlisting>
  125. </example>
  126. </para>
  127. </sect2>
  128. <sect2 id="zend.measure.edit.equal">
  129. <title>Vérifier l'égalité des mesures</title>
  130. <para>
  131. Les mesures peuvent également être comparées, mais sans conversion automatique de
  132. l'unité. De plus, <methodname>equals()</methodname> retourne <constant>TRUE</constant>, seulement si la
  133. valeur et l'unité de mesure sont identiques.
  134. </para>
  135. <para>
  136. <example id="zend.measure.edit.equal.example-1">
  137. <title>Mesures différentes</title>
  138. <programlisting language="php"><![CDATA[
  139. // Définition des mesures
  140. $unite1 = new Zend_Measure_Length(100, Zend_Measure_Length::CENTIMETER);
  141. $unite2 = new Zend_Measure_Length(1, Zend_Measure_Length::METER);
  142. if ($unite1->equals($unite2)) {
  143. print "Les mesures sont identiques";
  144. } else {
  145. print "Les mesures sont différentes";
  146. }
  147. // affiche "Les mesures sont différentes"
  148. ]]></programlisting>
  149. </example> <example id="zend.measure.edit.equal.example-2">
  150. <title>Mesures identiques</title>
  151. <programlisting language="php"><![CDATA[
  152. // Définition des mesures
  153. $unite1 = new Zend_Measure_Length(100, Zend_Measure_Length::CENTIMETER);
  154. $unite2 = new Zend_Measure_Length(1, Zend_Measure_Length::METER);
  155. $unite2->setType(Zend_Measure_Length::CENTIMETER);
  156. if ($unite1->equals($unite2)) {
  157. print "Les mesures sont identiques";
  158. } else {
  159. print "Les mesures sont différentes";
  160. } // affiche "Les mesures sont identiques"
  161. ]]></programlisting>
  162. </example>
  163. </para>
  164. </sect2>
  165. <sect2 id="zend.measure.edit.compare">
  166. <title>Comparer les mesures</title>
  167. <para>
  168. Pour déterminer si une mesure est plus ou moins grande qu'une autre, il faut
  169. utiliser <methodname>compare()</methodname>, qui renvoie 0, -1 ou 1 selon la différence entre les
  170. deux objets. Les mesures identiques retourneront 0. Plus petit retournera -1 et plus
  171. grand retournera +1.
  172. </para>
  173. <para>
  174. <example id="zend.measure.edit.compare.example-1">
  175. <title>Différence</title>
  176. <programlisting language="php"><![CDATA[
  177. $unite1 = new Zend_Measure_Length(100, Zend_Measure_Length::CENTIMETER);
  178. $unite2 = new Zend_Measure_Length(1, Zend_Measure_Length::METER);
  179. $unite3 = new Zend_Measure_Length(1.2, Zend_Measure_Length::METER);
  180. print "Egalité : ".$unite2->compare($unite1);
  181. // affiche "Egalité : 0"
  182. print "Plus petit que : ".$unite2->compare($unite3);
  183. // affiche "Plus petit que : -1"
  184. print "Plus grand que : ".$unite3->compare($unite2);
  185. // affiche "Plus grand que : 1"
  186. ]]></programlisting>
  187. </example>
  188. </para>
  189. </sect2>
  190. <sect2 id="zend.measure.edit.changevalue">
  191. <title>Changer manuellement des valeurs</title>
  192. <para>
  193. Pour changer explicitement la valeur d'une mesure, il faut utiliser
  194. <methodname>setValue()</methodname> pour surcharger la valeur courante. Les paramètres sont
  195. identiques à ceux du constructeur.
  196. </para>
  197. <para>
  198. <example id="zend.measure.edit.changevalue.example-1">
  199. <title>Changer une valeur</title>
  200. <programlisting language="php"><![CDATA[
  201. $locale = new Zend_Locale('de_AT');
  202. $unite = new Zend_Measure_Length(1,Zend_Measure_Length::METER);
  203. $unite->setValue(1.2);
  204. echo $unite; // affiche "1.2 m"
  205. $unite->setValue(1.2, Zend_Measure_Length::KILOMETER);
  206. echo $unite; // affiche "1200 km"
  207. $unite->setValue("1.234,56", Zend_Measure_Length::MILLIMETER,$locale);
  208. echo $unite; // affiche "1234.56 mm"
  209. ]]></programlisting>
  210. </example>
  211. </para>
  212. </sect2>
  213. <sect2 id="zend.measure.edit.changetype">
  214. <title>Changer manuellement de type</title>
  215. <para>
  216. Pour changer le type d'une mesure sans altérer sa valeur, il faut utiliser
  217. <methodname>setType()</methodname>.
  218. </para>
  219. <example id="zend.measure.edit.changetype.example-1">
  220. <title>Changer de type</title>
  221. <programlisting language="php"><![CDATA[
  222. $unite = new Zend_Measure_Length(1,Zend_Measure_Length::METER);
  223. echo $unite; // affiche "1 m"
  224. $unite->setType(Zend_Measure_Length::KILOMETER);
  225. echo $unite; // affiche "1000 km"
  226. ]]></programlisting>
  227. </example>
  228. </sect2>
  229. </sect1>