You are here

class MinorUnitsConverter in Commerce Core 8.2

Default implementation of the minor units converter.

Hierarchy

Expanded class hierarchy of MinorUnitsConverter

1 file declares its use of MinorUnitsConverter
MinorUnitsConverterTest.php in modules/price/tests/src/Unit/MinorUnitsConverterTest.php
1 string reference to 'MinorUnitsConverter'
commerce_price.services.yml in modules/price/commerce_price.services.yml
modules/price/commerce_price.services.yml
1 service uses MinorUnitsConverter
commerce_price.minor_units_converter in modules/price/commerce_price.services.yml
Drupal\commerce_price\MinorUnitsConverter

File

modules/price/src/MinorUnitsConverter.php, line 10

Namespace

Drupal\commerce_price
View source
class MinorUnitsConverter implements MinorUnitsConverterInterface {

  /**
   * The currency repository.
   *
   * @var \Drupal\commerce_price\Repository\CurrencyRepositoryInterface
   */
  protected $currencyRepository;

  /**
   * Constructs a new MinorUnitsConverter object.
   *
   * @param \Drupal\commerce_price\Repository\CurrencyRepositoryInterface $currency_repository
   *   The currency repository.
   */
  public function __construct(CurrencyRepositoryInterface $currency_repository) {
    $this->currencyRepository = $currency_repository;
  }

  /**
   * {@inheritdoc}
   */
  public function fromMinorUnits($amount, $currency_code) : Price {
    $fraction_digits = $this->currencyRepository
      ->getDefaultFractionDigits($currency_code);
    if ($fraction_digits > 0) {
      $amount = Calculator::divide((string) $amount, pow(10, $fraction_digits), $fraction_digits);
    }
    return new Price((string) $amount, $currency_code);
  }

  /**
   * {@inheritdoc}
   */
  public function toMinorUnits(Price $amount) : int {
    $fraction_digits = $this->currencyRepository
      ->getDefaultFractionDigits($amount
      ->getCurrencyCode());
    $number = $amount
      ->getNumber();
    if ($fraction_digits > 0) {
      $number = Calculator::multiply($number, pow(10, $fraction_digits));
    }
    return round($number);
  }

}

Members

Namesort descending Modifiers Type Description Overrides
MinorUnitsConverter::$currencyRepository protected property The currency repository.
MinorUnitsConverter::fromMinorUnits public function Converts an amount in "minor unit" to a decimal amount. Overrides MinorUnitsConverterInterface::fromMinorUnits
MinorUnitsConverter::toMinorUnits public function Converts the given amount to its minor units. Overrides MinorUnitsConverterInterface::toMinorUnits
MinorUnitsConverter::__construct public function Constructs a new MinorUnitsConverter object.