Files
mareike/app/ValueObjects/Amount.php

55 lines
1.5 KiB
PHP

<?php
namespace App\ValueObjects;
class Amount {
private string $currency;
private float $amount;
public static function fromString(string $amountString, string $currency = ' Euro') : Amount {
return new self(
(float)str_replace(',', '.', $amountString)
, $currency);
}
public function __construct(float $amount, string $currency) {
$this->currency = $currency;
$this->amount = $amount;
}
public function getAmount() : float {
return $this->amount;
}
public function getRoundedAmount() : int {
return round($this->amount);
}
public function getCurrency() : string {
return $this->currency;
}
public function toString() : string {
$value = number_format( round( $this->amount, 2 ), 2, ',', '.' );
return sprintf('%1$s %2$s', $value, $this->currency)
|> trim(...)
|> function (string $value) : string { return str_replace('.', ',', $value); };
}
public function addAmount(Amount $amount) : void {
$this->amount += $amount->getAmount();
}
public function subtractAmount(Amount $amount) : void {
$this->amount -= $amount->getAmount();
}
public function getFormattedAmount() : string {
$value = number_format( round( $this->amount, 2 ), 2, ',', '.' );
return $value
|> trim(...)
|> function (string $value) : string { return str_replace('.', ',', $value); };
}
}