Zend_Currency-Usage.xml 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 20100 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.currency.usage">
  5. <title>Utiliser Zend_Currency</title>
  6. <sect2 id="zend.currency.usage.generic">
  7. <title>Utilisation de base</title>
  8. <para>
  9. La manière la plus simple consiste à se reposer sur la locale de l'utilisateur. Lorsque vous créez
  10. une instance de <classname>Zend_Currency</classname> sans préciser d'options, la locale du client sera alors
  11. utilisée.
  12. </para>
  13. <example id="zend.currency.usage.generic.example-1">
  14. <title>Créer une monnaie avec les paramètres du client</title>
  15. <para>
  16. Imaginons un client dont la locale est "en_US" dans son navigateur. Dans ce cas,
  17. <classname>Zend_Currency</classname> détectera automatiquement la monnaie à utiliser.
  18. </para>
  19. <programlisting language="php"><![CDATA[
  20. $currency = new Zend_Currency();
  21. // Voyons les paramètres par défaut régis par la locale utilisateur
  22. // var_dump($currency);
  23. ]]></programlisting>
  24. <para>
  25. L'objet crée va alors contenir une monnaie "US Dollar" car il s'agit de la monnaie affectée
  26. aux USA. D'autres options ont aussi été affectées comme le signe "$" ou l'abbréviation
  27. "USD".
  28. </para>
  29. </example>
  30. <note>
  31. <title>La détection automatique par locale ne fonctionne pas toujours</title>
  32. <para>
  33. La détection automatique par locale ne fonctionne pas toujours car
  34. <classname>Zend_Currency</classname> nécessite une locale incluant la région. Si le client
  35. utilise une locale courte ("en"), <classname>Zend_Currency</classname> ne sait pas quelle
  36. région parmi les 30 possibles choisir. Une exception sera alors levée.
  37. </para>
  38. <para>
  39. Un client peut aussi déregler la locale dans son navigateur, ou la supprimer. Ainsi le paramètre
  40. de l'environnement sera alors utilisé pour la locale, ce qui peut mener à des comportements non
  41. attendus ou des exceptions.
  42. </para>
  43. </note>
  44. </sect2>
  45. <sect2 id="zend.currency.usage.locale">
  46. <title>Créer une monnaie basée sur une locale</title>
  47. <para>
  48. Pour éviter ce genre de problème, précisez manuellement la locale à utiliser.
  49. </para>
  50. <programlisting language="php"><![CDATA[
  51. $currency = new Zend_Currency('en_US');
  52. // Utilisation de l'option 'locale'
  53. // $currency = new Zend_Currency(array('locale' => 'en_US'));
  54. // Voir la monnaie avec les paramètres actuels fixés à 'en_US'
  55. // var_dump($currency);
  56. ]]></programlisting>
  57. <para>
  58. Dans l'exemple ci-dessus, nous ne sommes plus dépendant du client.
  59. </para>
  60. <para>
  61. <classname>Zend_Currency</classname> supporte aussi l'utilisation d'une locale globale.
  62. Mettez une instance de <classname>Zend_Locale</classname> dans le registre comme montré
  63. ci-après. Dans un tel cas, l'option locale n'est plus obligatoire pour chaque instance
  64. et la même locale sera utilisée partout, tout le temps.
  65. </para>
  66. <programlisting language="php"><![CDATA[
  67. // dans le bootstrap
  68. $locale = new Zend_Locale('de_AT');
  69. Zend_Registry::set('Zend_Locale', $locale);
  70. // quelque part dans l'application
  71. $currency = new Zend_Currency();
  72. ]]></programlisting>
  73. </sect2>
  74. </sect1>