NumberHelper.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <?php
  2. /**
  3. * Number Helper.
  4. *
  5. * Methods to make numbers more readable.
  6. *
  7. * PHP 5
  8. *
  9. * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
  10. * Copyright 2005-2011, Cake Software Foundation, Inc. (http://cakefoundation.org)
  11. *
  12. * Licensed under The MIT License
  13. * Redistributions of files must retain the above copyright notice.
  14. *
  15. * @copyright Copyright 2005-2011, Cake Software Foundation, Inc. (http://cakefoundation.org)
  16. * @link http://cakephp.org CakePHP(tm) Project
  17. * @package Cake.View.Helper
  18. * @since CakePHP(tm) v 0.10.0.1076
  19. * @license MIT License (http://www.opensource.org/licenses/mit-license.php)
  20. */
  21. App::uses('CakeNumber', 'Utility');
  22. App::uses('AppHelper', 'View/Helper');
  23. /**
  24. * Number helper library.
  25. *
  26. * Methods to make numbers more readable.
  27. *
  28. * @package Cake.View.Helper
  29. * @link http://book.cakephp.org/2.0/en/core-libraries/helpers/number.html
  30. * @see CakeNumber
  31. */
  32. class NumberHelper extends AppHelper {
  33. /** CakeNumber instance
  34. */
  35. protected $_CakeNumber = null;
  36. /* Default Constructor
  37. *
  38. * @param View $View The View this helper is being attached to.
  39. * @param array $settings Configuration settings for the helper
  40. */
  41. function __construct(View $View, $settings = array()) {
  42. $settings = Set::merge(array('engine' => 'CakeNumber'), $settings);
  43. parent::__construct($View, $settings);
  44. list($plugin, $engineClass) = pluginSplit($settings['engine'], true);
  45. App::uses($engineClass, $plugin . 'Utility');
  46. if (class_exists($engineClass)) {
  47. $this->_CakeNumber = new $engineClass($settings);
  48. } else {
  49. throw new CakeException(__d('cake_dev', '%s could not be found', $engineClass));
  50. }
  51. }
  52. /**
  53. * Call methods from CakeNumber utility class
  54. */
  55. public function __call($method, $params) {
  56. return call_user_func_array(array($this->_CakeNumber, $method), $params);
  57. }
  58. /**
  59. * @see: CakeNumber::precision()
  60. *
  61. * @param float $number A floating point number.
  62. * @param integer $precision The precision of the returned number.
  63. * @return float Formatted float.
  64. * @link http://book.cakephp.org/2.0/en/core-libraries/helpers/number.html#NumberHelper::precision
  65. */
  66. public function precision($number, $precision = 3) {
  67. return $this->_CakeNumber->precision($number, $precision);
  68. }
  69. /**
  70. * @see: CakeNumber::toReadableSize()
  71. *
  72. * @param integer $size Size in bytes
  73. * @return string Human readable size
  74. * @link http://book.cakephp.org/2.0/en/core-libraries/helpers/number.html#NumberHelper::toReadableSize
  75. */
  76. public function toReadableSize($size) {
  77. return $this->_CakeNumber->toReadableSize($size);
  78. }
  79. /**
  80. * @see: CakeNumber::toPercentage()
  81. *
  82. * @param float $number A floating point number
  83. * @param integer $precision The precision of the returned number
  84. * @return string Percentage string
  85. * @link http://book.cakephp.org/2.0/en/core-libraries/helpers/number.html#NumberHelper::toPercentage
  86. */
  87. public function toPercentage($number, $precision = 2) {
  88. return $this->_CakeNumber->toPercentage($number, $precision);
  89. }
  90. /**
  91. * @see: CakeNumber::format()
  92. *
  93. * @param float $number A floating point number
  94. * @param integer $options if int then places, if string then before, if (,.-) then use it
  95. * or array with places and before keys
  96. * @return string formatted number
  97. * @link http://book.cakephp.org/2.0/en/core-libraries/helpers/number.html#NumberHelper::format
  98. */
  99. public function format($number, $options = false) {
  100. return $this->_CakeNumber->format($number, $options);
  101. }
  102. /**
  103. * @see: CakeNumber::currency()
  104. *
  105. * @param float $number
  106. * @param string $currency Shortcut to default options. Valid values are 'USD', 'EUR', 'GBP', otherwise
  107. * set at least 'before' and 'after' options.
  108. * @param array $options
  109. * @return string Number formatted as a currency.
  110. * @link http://book.cakephp.org/2.0/en/core-libraries/helpers/number.html#NumberHelper::currency
  111. */
  112. public function currency($number, $currency = 'USD', $options = array()) {
  113. return $this->_CakeNumber->currency($number, $currency, $options);
  114. }
  115. /**
  116. * @see: CakeNumber::addFormat()
  117. *
  118. * @param string $formatName The format name to be used in the future.
  119. * @param array $options The array of options for this format.
  120. * @return void
  121. * @see NumberHelper::currency()
  122. * @link http://book.cakephp.org/2.0/en/core-libraries/helpers/number.html#NumberHelper::addFormat
  123. */
  124. public function addFormat($formatName, $options) {
  125. return $this->_CakeNumber->addFormat($formatName, $options);
  126. }
  127. }