| // +----------------------------------------------------------------------+ // // $Id: Words.php,v 1.3 2005/03/09 07:29:19 makler Exp $ // /** * The Numbers_Words class provides method to convert arabic numerals to * words (also with currency name). * * @author Piotr Klaban * @package Numbers_Words */ // {{{ Numbers_Words /** * The Numbers_Words class provides method to convert arabic numerals to words. * * @access public * @author Piotr Klaban * @since PHP 4.2.3 * @package Numbers_Words */ // This is an obvious static classe, functions should be static too. class Numbers_Words { // {{{ toWords() /** * Converts a number to its word representation * * @param integer $num An integer between -infinity and infinity inclusive :) * that should be converted to a words representation * * @param string $locale Language name abbreviation. Optional. Defaults to en_US. * * @return string The corresponding word representation * * @access public * @author Piotr Klaban * @since PHP 4.2.3 */ function toWords($num, $locale = 'en_US') { include_once("Numbers/Words/lang.${locale}.php"); $classname = "Numbers_Words_${locale}"; if (!class_exists($classname)) { return Numbers_Words::raiseError("Unable to include the Numbers/Words/lang.${locale}.php file"); } $methods = get_class_methods($classname); if (!in_array('toWords', $methods) && !in_array('towords', $methods)) { return Numbers_Words::raiseError("Unable to find toWords method in '$classname' class"); } @$obj = new $classname; return trim($obj->toWords($num)); } // }}} // {{{ toCurrency() /** * Converts a currency value to word representation (1.02 => one dollar two cents) * If the number has not any fraction part, the "cents" number is omitted. * * @param float $num A float/integer/string number representing currency value * * @param string $locale Language name abbreviation. Optional. Defaults to en_US. * * @param string $int_curr International currency symbol * as defined by the ISO 4217 standard (three characters). * E.g. 'EUR', 'USD', 'PLN'. Optional. * Defaults to $def_currency defined in the language class. * * @return string The corresponding word representation * * @access public * @author Piotr Klaban * @since PHP 4.2.3 */ static function toCurrency($num, $locale = 'en_US', $int_curr = '') { $ret = $num; @include_once("Numbers/Words/lang.${locale}.php"); $classname = "Numbers_Words_${locale}"; if (!class_exists($classname)) { return Numbers_Words::raiseError("Unable to include the Numbers/Words/lang.${locale}.php file"); } $methods = get_class_methods($classname); if (!in_array('toCurrencyWords', $methods) && !in_array('tocurrencywords', $methods)) { return Numbers_Words::raiseError("Unable to find toCurrencyWords method in '$classname' class"); } @$obj = new $classname; if (strpos($num, '.') === false) { $ret = trim($obj->toCurrencyWords($int_curr, $num)); } else { $currency = explode('.', $num, 2); /* add leading zero */ if (strlen($currency[1]) == 1) { $currency[1] .= '0'; } $ret = trim($obj->toCurrencyWords($int_curr, $currency[0], $currency[1])); } return $ret; } // }}} // {{{ raiseError() /** * Trigger a PEAR error * * To improve performances, the PEAR.php file is included dynamically. * * @param string error message */ static function raiseError($msg) { include_once('PEAR.php'); return PEAR::raiseError($msg); } // }}} } // }}} ?>