Introduction à Zend_Currency

Utiliser Zend_Currency

Utilisation de base

La manière la plus simple consiste à se reposer sur la locale de l'utilisateur. Lorsque vous créez une instance de Zend_Currency sans préciser d'options, la locale du client sera alors utilisée.

Example #1 Créer une monnaie avec les paramètres du client

Imaginons un client dont la locale est "en_US" dans son navigateur. Dans ce cas, Zend_Currency détectera automatiquement la monnaie à utiliser.

  1. $currency = new Zend_Currency();
  2.  
  3. // Voyons les paramètres par défaut régis par la locale utilisateur
  4. // var_dump($currency);

L'objet crée va alors contenir une monnaie "US Dollar" car il s'agit de la monnaie affectée aux USA. D'autres options ont aussi été affectées comme le signe "$" ou l'abbréviation "USD".

Note: La détection automatique par locale ne fonctionne pas toujours
La détection automatique par locale ne fonctionne pas toujours car Zend_Currency nécessite une locale incluant la région. Si le client utilise une locale courte ("en"), Zend_Currency ne sait pas quelle région parmi les 30 possibles choisir. Une exception sera alors levée.
Un client peut aussi déregler la locale dans son navigateur, ou la supprimer. Ainsi le paramètre de l'environnement sera alors utilisé pour la locale, ce qui peut mener à des comportements non attendus ou des exceptions.

Créer une monnaie basée sur une locale

Pour éviter ce genre de problème, précisez manuellement la locale à utiliser.

  1. $currency = new Zend_Currency('en_US');
  2.  
  3. // Utilisation de l'option 'locale'
  4. // $currency = new Zend_Currency(array('locale' => 'en_US'));
  5.  
  6. // Voir la monnaie avec les paramètres actuels fixés à 'en_US'
  7. // var_dump($currency);

Dans l'exemple ci-dessus, nous ne sommes plus dépendant du client.

Zend_Currency supporte aussi l'utilisation d'une locale globale. Mettez une instance de Zend_Locale dans le registre comme montré ci-après. Dans un tel cas, l'option locale n'est plus obligatoire pour chaque instance et la même locale sera utilisée partout, tout le temps.

  1. // dans le bootstrap
  2. $locale = new Zend_Locale('de_AT');
  3. Zend_Registry::set('Zend_Locale', $locale);
  4.  
  5. // quelque part dans l'application
  6. $currency = new Zend_Currency();

Introduction à Zend_Currency