* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ namespace PrestaShop\PrestaShop\Core\Domain\ValueObject; use PrestaShop\Decimal\DecimalNumber; use PrestaShop\PrestaShop\Core\Domain\Currency\ValueObject\CurrencyId; use PrestaShop\PrestaShop\Core\Domain\Exception\DomainConstraintException; /** * An amount of money with currency */ class Money { /** * @var DecimalNumber */ private $amount; /** * @var CurrencyId */ private $currencyId; /** * @param DecimalNumber $amount * @param CurrencyId $currencyId * * @throws DomainConstraintException */ public function __construct(DecimalNumber $amount, CurrencyId $currencyId) { if (!$amount->isGreaterOrEqualThanZero()) { throw new DomainConstraintException(sprintf('Money amount cannot be lower than zero, %f given', (string) $amount), DomainConstraintException::INVALID_MONEY_AMOUNT); } $this->amount = $amount; $this->currencyId = $currencyId; } /** * @return DecimalNumber */ public function getAmount(): DecimalNumber { return $this->amount; } /** * @return CurrencyId */ public function getCurrencyId(): CurrencyId { return $this->currencyId; } }