/lib/Cake/View/Helper/NumberHelper.php

https://github.com/shama/cakephp · PHP · 165 lines · 44 code · 13 blank · 108 comment · 2 complexity · a2133396dfac600dc3de3aaa1a3a4991 MD5 · raw file

  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 (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
  11. *
  12. * Licensed under The MIT License
  13. * For full copyright and license information, please see the LICENSE.txt
  14. * Redistributions of files must retain the above copyright notice.
  15. *
  16. * @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
  17. * @link http://cakephp.org CakePHP(tm) Project
  18. * @package Cake.View.Helper
  19. * @since CakePHP(tm) v 0.10.0.1076
  20. * @license MIT License (http://www.opensource.org/licenses/mit-license.php)
  21. */
  22. namespace Cake\View\Helper;
  23. use Cake\Core\App;
  24. use Cake\Error;
  25. use Cake\Utility\Hash;
  26. use Cake\View\Helper;
  27. use Cake\View\View;
  28. /**
  29. * Number helper library.
  30. *
  31. * Methods to make numbers more readable.
  32. *
  33. * @package Cake.View.Helper
  34. * @link http://book.cakephp.org/2.0/en/core-libraries/helpers/number.html
  35. * @see Cake\Utility\Number
  36. */
  37. class NumberHelper extends Helper {
  38. /**
  39. * Cake\Utility\Number instance
  40. *
  41. * @var Cake\Utility\Number
  42. */
  43. protected $_engine = null;
  44. /**
  45. * Default Constructor
  46. *
  47. * ### Settings:
  48. *
  49. * - `engine` Class name to use to replace Cake\Utility\Number functionality
  50. * The class needs to be placed in the `Utility` directory.
  51. *
  52. * @param View $View The View this helper is being attached to.
  53. * @param array $settings Configuration settings for the helper
  54. * @throws Cake\Error\Exception When the engine class could not be found.
  55. */
  56. public function __construct(View $View, $settings = array()) {
  57. $settings = Hash::merge(array('engine' => 'Cake\Utility\Number'), $settings);
  58. parent::__construct($View, $settings);
  59. $engineClass = App::classname($settings['engine'], 'Utility');
  60. if ($engineClass) {
  61. $this->_engine = new $engineClass($settings);
  62. } else {
  63. throw new Error\Exception(__d('cake_dev', 'Class for %s could not be found', $settings['engine']));
  64. }
  65. }
  66. /**
  67. * Call methods from Cake\Utility\Number utility class
  68. */
  69. public function __call($method, $params) {
  70. return call_user_func_array(array($this->_engine, $method), $params);
  71. }
  72. /**
  73. * @see: Cake\Utility\Number::precision()
  74. *
  75. * @param float $number A floating point number.
  76. * @param integer $precision The precision of the returned number.
  77. * @return float Formatted float.
  78. * @link http://book.cakephp.org/2.0/en/core-libraries/helpers/number.html#NumberHelper::precision
  79. */
  80. public function precision($number, $precision = 3) {
  81. return $this->_engine->precision($number, $precision);
  82. }
  83. /**
  84. * @see: Cake\Utility\Number::toReadableSize()
  85. *
  86. * @param integer $size Size in bytes
  87. * @return string Human readable size
  88. * @link http://book.cakephp.org/2.0/en/core-libraries/helpers/number.html#NumberHelper::toReadableSize
  89. */
  90. public function toReadableSize($size) {
  91. return $this->_engine->toReadableSize($size);
  92. }
  93. /**
  94. * @see: Cake\Utility\Number::toPercentage()
  95. *
  96. * @param float $number A floating point number
  97. * @param integer $precision The precision of the returned number
  98. * @return string Percentage string
  99. * @link http://book.cakephp.org/2.0/en/core-libraries/helpers/number.html#NumberHelper::toPercentage
  100. */
  101. public function toPercentage($number, $precision = 2) {
  102. return $this->_engine->toPercentage($number, $precision);
  103. }
  104. /**
  105. * @see: Cake\Utility\Number::format()
  106. *
  107. * @param float $number A floating point number
  108. * @param integer $options if int then places, if string then before, if (,.-) then use it
  109. * or array with places and before keys
  110. * @return string formatted number
  111. * @link http://book.cakephp.org/2.0/en/core-libraries/helpers/number.html#NumberHelper::format
  112. */
  113. public function format($number, $options = false) {
  114. return $this->_engine->format($number, $options);
  115. }
  116. /**
  117. * @see: Cake\Utility\Number::currency()
  118. *
  119. * @param float $number
  120. * @param string $currency Shortcut to default options. Valid values are 'USD', 'EUR', 'GBP', otherwise
  121. * set at least 'before' and 'after' options.
  122. * 'USD' is the default currency, use CakeNumber::defaultCurrency() to change this default.
  123. * @param array $options
  124. * @return string Number formatted as a currency.
  125. * @link http://book.cakephp.org/2.0/en/core-libraries/helpers/number.html#NumberHelper::currency
  126. */
  127. public function currency($number, $currency = null, $options = array()) {
  128. return $this->_engine->currency($number, $currency, $options);
  129. }
  130. /**
  131. * @see: Cake\Utility\Number::addFormat()
  132. *
  133. * @param string $formatName The format name to be used in the future.
  134. * @param array $options The array of options for this format.
  135. * @return void
  136. * @see NumberHelper::currency()
  137. * @link http://book.cakephp.org/2.0/en/core-libraries/helpers/number.html#NumberHelper::addFormat
  138. */
  139. public function addFormat($formatName, $options) {
  140. return $this->_engine->addFormat($formatName, $options);
  141. }
  142. /**
  143. * @see CakeNumber::defaultCurrency()
  144. *
  145. * @param string $currency The currency to be used in the future.
  146. * @return void
  147. * @see NumberHelper::currency()
  148. */
  149. public function defaultCurrency($currency) {
  150. return $this->_engine->defaultCurrency($currency);
  151. }
  152. }