Zend_Currency-Usage.xml 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.currency.usage">
  5. <title>Zend_Currency verwenden</title>
  6. <sect2 id="zend.currency.usage.generic">
  7. <title>Generelle Verwendung</title>
  8. <para>
  9. Der einfachste Anwendungsfall in einer Anwendung ist die Verwendung des Gebietsschemas
  10. des Clients. Wenn man eine Instanz von <classname>Zend_Currency</classname> erstellt
  11. ohne eine Option anzugeben, wird das Gebietsschema des Clients verwendet um die richtige
  12. Währung zu setzen.
  13. </para>
  14. <example id="zend.currency.usage.generic.example-1">
  15. <title>Erstellung einer Währung mit Client Einstellungen</title>
  16. <para>
  17. Angenommen unser Client hat "en_US" als gewünschte Sprache in seinem Browser
  18. gesetzt. In diesem Fall wird <classname>Zend_Currency</classname> die Währung welche
  19. zu verwenden automatisch erkannt.
  20. </para>
  21. <programlisting language="php"><![CDATA[
  22. $currency = new Zend_Currency();
  23. // Siehe die Standardwerte welche vom Client abhängen
  24. // var_dump($currency);
  25. ]]></programlisting>
  26. <para>
  27. Das erstellte Objekt würde jetzt die Währung "US Dollar" enthalten da dies die
  28. aktuell zugeordnete Währung für US (Vereinigte Staaten) ist. Es wurden auch andere
  29. Optionen gesetzt wie "$" für das Währungszeichen oder "USD" für die Abkürzung.
  30. </para>
  31. </example>
  32. <note>
  33. <title>Die automatische Erkennung des Gebietsschemas funktioniert nicht immer</title>
  34. <para>
  35. Es ist zu beachten das die automatische Erkennung des Gebietsschemas nicht immer
  36. richtig funktioniert. Der Grund für dieses Verhalten liegt darin das
  37. <classname>Zend_Currency</classname> ein Gebietsschema benötigt welches eine Region
  38. enthält. Wenn der Client nur "en" als Gebietsschema setzt würde
  39. <classname>Zend_Currency</classname> nicht mehr wissen welches der mehr als 30
  40. Länder gemeint ist. In diesem Fall wird eine Exception geworfen.
  41. </para>
  42. <para>
  43. Ein Client könnte die Einstellungen des Gebietsschemas in seinem Browser auch
  44. unterdrücken. Das würde zum Problem führen dass die Einstellungen der eigenen
  45. Umgebung als Fallback verwendet werden und dies könnte auch zu einer Exception
  46. führen.
  47. </para>
  48. </note>
  49. </sect2>
  50. <sect2 id="zend.currency.usage.locale">
  51. <title>Erstellung einer Währung basierend auf einem Gebietsschema</title>
  52. <para>
  53. Um diese Probleme mit dem Client zu vermeiden kann man das gewünschte Gebietsschema
  54. einfach manuell setzen.
  55. </para>
  56. <programlisting language="php"><![CDATA[
  57. $currency = new Zend_Currency('en_US');
  58. // Man könnte auch die 'locale' Option verwenden
  59. // $currency = new Zend_Currency(array('locale' => 'en_US'));
  60. // Siehe die aktuellen Einstellungen welche auf 'en_US' fixiert sind
  61. // var_dump($currency);
  62. ]]></programlisting>
  63. <para>
  64. Wie in unserem ersten Beispiel ist die verwendete Währung "US Dollar". Aber jetzt sind
  65. wir nicht mehr von den Einstellungen des Clients abhängig.
  66. </para>
  67. <para>
  68. <classname>Zend_Currency</classname> unterstützt auch die Verwendung eines
  69. Anwendungsweiten Gebietsschemas. Man kann eine Instanz von
  70. <classname>Zend_Locale</classname> wie anbei gezeigt in der Registry setzen. Mit dieser
  71. Schreibweise vermeidet man das manuelle Setzen des Gebietsschemas für jede Instanz, wenn
  72. man das selbe Gebietsschema in der gesamten Anwendung verwenden will.
  73. </para>
  74. <programlisting language="php"><![CDATA[
  75. // In der Bootstrap Datei
  76. $locale = new Zend_Locale('de_AT');
  77. Zend_Registry::set('Zend_Locale', $locale);
  78. // Irgendwo in der Anwendung
  79. $currency = new Zend_Currency();
  80. ]]></programlisting>
  81. </sect2>
  82. <sect2 id="zend.currency.usage.territory">
  83. <title>Erstellung einer Währung basierend auf einem Land</title>
  84. <para>
  85. <classname>Zend_Currency</classname> ist auch in der Lage basierend auf einem
  86. angegebenen Land zu arbeiten indem intern <classname>Zend_Locale</classname> verwendet
  87. wird.
  88. </para>
  89. <programlisting language="php"><![CDATA[
  90. $currency = new Zend_Currency('US');
  91. // See the actual settings which are fixed to 'en_US'
  92. // var_dump($currency);
  93. ]]></programlisting>
  94. <note>
  95. <title>Uppercase territories</title>
  96. <para>
  97. When you know that you are using a territory, then you should uppercase it.
  98. Otherwise you could get an in your eyes false locale in return. For example,
  99. when you give "om" then you could expect "ar_OM" to be returned. But in fact it
  100. returns "om", as it's also a language.
  101. </para>
  102. <para>
  103. Therefor always uppercase the input when you know that a territory is meant.
  104. </para>
  105. </note>
  106. </sect2>
  107. </sect1>