Context
1 year ago
Exception
1 year ago
ExchangeRateProvider
1 year ago
AbstractMoney.php
1 year ago
Context.php
1 year ago
Currency.php
1 year ago
CurrencyConverter.php
1 year ago
ExchangeRateProvider.php
1 year ago
ISOCurrencyProvider.php
1 year ago
Money.php
1 year ago
MoneyBag.php
1 year ago
MoneyComparator.php
1 year ago
MoneyContainer.php
1 year ago
RationalMoney.php
1 year ago
Context.php
56 lines
| 1 | <?php |
| 2 | |
| 3 | declare(strict_types=1); |
| 4 | |
| 5 | namespace Brick\Money; |
| 6 | |
| 7 | use Brick\Math\BigDecimal; |
| 8 | use Brick\Math\BigNumber; |
| 9 | use Brick\Math\Exception\RoundingNecessaryException; |
| 10 | use Brick\Math\RoundingMode; |
| 11 | |
| 12 | /** |
| 13 | * Adjusts a rational number to a decimal amount. |
| 14 | */ |
| 15 | interface Context |
| 16 | { |
| 17 | /** |
| 18 | * Applies this context to a rational amount, and returns a decimal number. |
| 19 | * |
| 20 | * The given rounding mode MUST be respected; no default rounding mode must be applied. |
| 21 | * In case the rounding mode is irrelevant, for example in AutoContext, this method MUST throw an exception if a |
| 22 | * rounding mode other than RoundingMode::UNNECESSARY is used. |
| 23 | * |
| 24 | * @psalm-param RoundingMode::* $roundingMode |
| 25 | * |
| 26 | * @param BigNumber $amount The amount. |
| 27 | * @param Currency $currency The target currency. |
| 28 | * @param int $roundingMode The rounding mode. |
| 29 | * |
| 30 | * @return BigDecimal |
| 31 | * |
| 32 | * @throws RoundingNecessaryException If the result cannot be represented at the required scale without rounding. |
| 33 | */ |
| 34 | public function applyTo(BigNumber $amount, Currency $currency, int $roundingMode) : BigDecimal; |
| 35 | |
| 36 | /** |
| 37 | * Returns the step used by this context. |
| 38 | * |
| 39 | * If no cash rounding is involved, this must return 1. |
| 40 | * This value is used by money allocation methods that do not go through the applyTo() method. |
| 41 | * |
| 42 | * @return int |
| 43 | */ |
| 44 | public function getStep() : int; |
| 45 | |
| 46 | /** |
| 47 | * Returns whether this context uses a fixed scale and step. |
| 48 | * |
| 49 | * When the scale and step are fixed, it is considered safe to add or subtract monies amounts directly —as long as |
| 50 | * they are in the same context— without going through the applyTo() method, allowing for an optimization. |
| 51 | * |
| 52 | * @return bool |
| 53 | */ |
| 54 | public function isFixedScale() : bool; |
| 55 | } |
| 56 |