BossBey File Manager
PHP:
8.2.30
OS:
Linux
User:
imagivibe
Root
/
home
/
imagivibe
/
www
/
app.imagivibe.com
/
vendor
/
moneyphp
/
money
/
src
/
Formatter
📤 Upload
📝 New File
📁 New Folder
Close
Editing: DecimalMoneyFormatter.php
<?php declare(strict_types=1); namespace Money\Formatter; use Money\Currencies; use Money\Money; use Money\MoneyFormatter; use function assert; use function str_pad; use function strlen; use function substr; /** * Formats a Money object as a decimal string. */ final class DecimalMoneyFormatter implements MoneyFormatter { public function __construct(private readonly Currencies $currencies) { } /** * @phpstan-return numeric-string */ public function format(Money $money): string { $valueBase = $money->getAmount(); $negative = $valueBase[0] === '-'; if ($negative) { $valueBase = substr($valueBase, 1); } $subunit = $this->currencies->subunitFor($money->getCurrency()); $valueLength = strlen($valueBase); if ($valueLength > $subunit) { $formatted = substr($valueBase, 0, $valueLength - $subunit); $decimalDigits = substr($valueBase, $valueLength - $subunit); if (strlen($decimalDigits) > 0) { $formatted .= '.' . $decimalDigits; } } else { $formatted = '0.' . str_pad('', $subunit - $valueLength, '0') . $valueBase; } if ($negative) { $formatted = '-' . $formatted; } assert($formatted !== ''); return $formatted; } }
Save
Cancel