| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.measure.creation">
- <title>Création d'une mesure</title>
- <para>
- En créant un objet de mesure, les méthodes <classname>Zend_Measure_*</classname>
- prévoient que l'entrée ou la mesure originale soit le premier paramètre. Ceci peut être un
- <link linkend="zend.measure.creation.number">argument numérique</link>, une
- <link linkend="zend.measure.creation.string"><type>chaîne</type></link> sans unités, ou une
- <link linkend="zend.measure.creation.localized">chaîne régionale</link> avec
- une (des) unité(s) spécifiée(s). Le deuxième paramètre définit le type de la mesure. Les
- deux paramètres sont obligatoires. La langue peut être indiquée comme troisième paramètre
- optionnel.
- </para>
- <sect2 id="zend.measure.creation.number">
- <title>Créer des mesures à partir de nombres entiers et décimaux</title>
- <para>
- En plus des valeurs de données en nombre entier, des nombre décimaux peuvent être
- employés, mais <ulink url="http://www.php.net/float">"il est fréquent que de simples
- fractions décimales telles que 0.1 ou 0.7 ne puissent être converties au format interne
- binaire sans une légère perte de précision"</ulink> parfois en donnant des résultats
- étonnants. En outre, il ne faut pas comparer l'égalité de deux nombres décimaux.
- </para>
- <example id="zend.measure.creation.number.example-1">
- <title>Création de mesure en utilisant des nombres entiers et décimaux</title>
- <programlisting language="php"><![CDATA[
- $mesure = 1234.7;
- $unite = new Zend_Measure_Length((integer)$mesure,
- Zend_Measure_Length::STANDARD);
- echo $unite;
- // affiche '1234 m' (mètres)
- $unite = new Zend_Measure_Length($mesure, Zend_Measure_Length::STANDARD);
- echo $unite;
- // affiche '1234.7 m' (mètres)
- ]]></programlisting>
- </example>
- </sect2>
- <sect2 id="zend.measure.creation.string">
- <title>Créer des mesures à partir de chaînes de caractères</title>
- <para>
- Beaucoup de mesures reçues comme entrée des applications Zend Framework peuvent
- seulement être passées aux classes <classname>Zend_Measure_*</classname> comme des
- chaînes, telles que des nombres écrits en utilisant les <ulink
- url="http://fr.wikipedia.org/wiki/Num%C3%A9ration_romaine">chiffres romains</ulink> ou
- les valeurs binaires extrêmement grandes qui excèdent la précision native de <acronym>PHP</acronym> des
- nombres entiers ou décimaux. Puisque les nombres entiers peuvent être indiqués en
- utilisant des chaînes, s'il y a un quelconque risque de perdre la précision à cause des
- limitations des types natifs (nombre entier et décimaux), il faut utiliser des chaînes à
- la place. <classname>Zend_Measure_Number</classname> emploie l'extension BCMath pour
- supporter la précision arbitraire, afin d'éviter les limitations dans beaucoup de
- fonctions de <acronym>PHP</acronym>, telle que <ulink
- url="http://php.net/bin2dec"><methodname>bin2dec()</methodname></ulink>.
- </para>
- <example id="zend.measure.creation.string.example-1">
- <title>Création de mesure en utilisant des chaînes</title>
- <programlisting language="php"><![CDATA[
- $machaine = "10010100111010111010100001011011101010001";
- $unit = new Zend_Measure_Number($machaine, Zend_Measure_Number::BINARY);
- echo $unit;
- ]]></programlisting>
- </example>
- </sect2>
- <sect2 id="zend.measure.creation.localized">
- <title>Mesures à partir de chaînes localisées</title>
- <para>
- Quand une corde est présentée dans une notation régionalisée, l'interprétation
- correcte ne peut pas être déterminée sans connaître la région attendue. La division des
- chiffres décimaux avec "." et grouper des milliers avec "," est commun en l'anglais,
- mais pas dans d'autres langues. Par exemple, le nombre anglais "1,234.50" serait
- interprété comme "1.2345" en allemand. Pour traiter de tels problèmes, la famille des
- classes <classname>Zend_Measure_*</classname> offrent la possibilité d'indiquer une
- langue ou une région pour lever l'ambiguïté les données d'entrée et pour interpréter
- correctement la valeur sémantique prévue.
- </para>
- <example id="zend.measure.creation.localized.example-1">
- <title>Chaînes localisées</title>
- <programlisting language="php"><![CDATA[
- $locale = new Zend_Locale('de');
- $machaine = "1,234.50";
- $unite = new Zend_Measure_Length($machaine,
- Zend_Measure_Length::STANDARD, $locale);
- echo $unite; // affiche "1.234 m"
- $machaine = "1,234.50";
- $unite = new Zend_Measure_Length($machaine,
- Zend_Measure_Length::STANDARD, 'en_US');
- echo $unite; // affiche "1234.50 m"
- ]]></programlisting>
- </example>
- <para>
- Depuis la version 1.7.0 de Zend Framework, <classname>Zend_Measure</classname>
- supporte aussi l'utilisation d'une application pleinement localisée. Vous pouvez
- simplement paramétrer une instance <classname>Zend_Locale</classname> dans le registre
- comme présenté ci-dessous. Avec cette notation vous pouvez ne pas paramétrer cette
- valeur manuellement à chaque fois quand vous utilisez la même localisation plusieurs
- fois.
- </para>
- <programlisting language="php"><![CDATA[
- // in your bootstrap file
- $locale = new Zend_Locale('de_AT');
- Zend_Registry::set('Zend_Locale', $locale);
- // somewhere in your application
- $length = new Zend_Measure_Length(Zend_Measure_Length::METER();
- ]]></programlisting>
- </sect2>
- </sect1>
|