NumberFormatter

Packagecraft.app.etc.i18n
NamespaceCraft
Inheritanceclass NumberFormatter » \CNumberFormatter » \CComponent
Since1.3
Source Codecraft/app/etc/i18n/NumberFormatter.php

Number formatter class.

Protected Properties #

PropertyTypeDescriptionDefined By
_locale\CNumberFormatter

Public Methods #

MethodDescriptionDefined By
__call()Calls the named method which is not a class method.\CComponent
__construct()Constructor.\CNumberFormatter
__get()Returns a property value, an event handler list or a behavior based on its name.\CComponent
__isset()Checks if a property value is null.\CComponent
__set()Sets value of a component property.\CComponent
__unset()Sets a component property to be null.\CComponent
asa()Returns the named behavior object.\CComponent
attachBehavior()Attaches a behavior to this component.\CComponent
attachBehaviors()Attaches a list of behaviors to the component.\CComponent
attachEventHandler()Attaches an event handler to an event.\CComponent
canGetProperty()Determines whether a property can be read.\CComponent
canSetProperty()Determines whether a property can be set.\CComponent
detachBehavior()Detaches a behavior from the component.\CComponent
detachBehaviors()Detaches all behaviors from the component.\CComponent
detachEventHandler()Detaches an existing event handler.\CComponent
disableBehavior()Disables an attached behavior.\CComponent
disableBehaviors()Disables all behaviors attached to this component.\CComponent
enableBehavior()Enables an attached behavior.\CComponent
enableBehaviors()Enables all behaviors attached to this component.\CComponent
evaluateExpression()Evaluates a PHP expression or callback under the context of this component.\CComponent
format()Formats a number based on the specified pattern.\CNumberFormatter
formatCurrency()Formats a number using the currency format defined in the locale.NumberFormatter
formatDecimal()Formats a number using the decimal format defined in the locale.NumberFormatter
formatPercentage()Formats a number using the percentage format defined in the locale.\CNumberFormatter
getEventHandlers()Returns the list of attached event handlers for an event.\CComponent
hasEvent()Determines whether an event is defined.\CComponent
hasEventHandler()Checks whether the named event has attached handlers.\CComponent
hasProperty()Determines whether a property is defined.\CComponent
raiseEvent()Raises an event.\CComponent

Protected Methods #

MethodDescriptionDefined By
formatNumber()Formats a number based on a format.\CNumberFormatter
parseFormat()Parses a given string pattern.\CNumberFormatter

Method Details #

formatCurrency() #

public function formatCurrency($value, $currency, $stripZeroCents = false)
{
     $result = parent::formatCurrency($value, $currency);

     if ($stripZeroCents)
     {
          $decimal = $this->_locale->getNumberSymbol('decimal');

          $result = preg_replace('/(.*)(\\'.$decimal.')(0{1,})(\\b)(.*)/u', '${1}${4}${5}', $result);
     }

     return $result;
}
$valuemixed
$currencystring
$stripZeroCentsbool
Returnsstring

The formatted result.

Formats a number using the currency format defined in the locale.

formatDecimal() #

public function formatDecimal($value, $withGroupSymbol = true)
{
     // Let's make sure the decimal format matches the number of decimal places specified in the value.
     $decimalFormat = $this->_locale->getDecimalFormat();

     // Find the starting decimal position in the format.
     for ($formatCounter = strlen($decimalFormat) - 1; $formatCounter >= 0; $formatCounter--)
     {
          if ($decimalFormat[$formatCounter] !== '#')
          {
               break;
          }
     }

     $formatCounter += 1;

     // Find the starting decimal position in the value.
     for ($valueCounter = strlen($value) - 1; $valueCounter >= 0; $valueCounter--)
     {
          if (!is_numeric($value[$valueCounter]))
          {
               break;
          }
     }

     $valueCounter += 1;

     // Calculate how many decimals we're using.
     $decimalLength = strlen($value) - $valueCounter;

     // Adjust the format for the number of decimals.
     for ($finalCounter = $formatCounter; $finalCounter <= $decimalLength + $formatCounter; $finalCounter++)
     {
          $decimalFormat[$finalCounter] = '#';
     }

     $result = $this->format($decimalFormat, $value);

     if (!$withGroupSymbol)
     {
          $result = str_replace($this->_locale->getNumberSymbol('group'), '', $result);
     }

     return $result;
}
$valuemixed
$withGroupSymbolbool
Returnsstring

Formats a number using the decimal format defined in the locale.