Zend_Measure-Edit.xml 9.1 KB

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