Начислить/Выделить НДС - класс PHP

Небольшой класс для расчёта цены без/с НДС.

<?php

class Price
{
    // Ставка НДС, %
    const PRICE_VAT_SETTING = 20;

    /**
     * Расчёт цены без НДС
     * @param mixed $price
     * @return float|null
     */
    public static function notVat(mixed $price): ?float
    {
        if ($price):
            $price = self::toFloat($price);
            $vat = self::toFloat(-1 * ($price / (1 + self::PRICE_VAT_SETTING / 100) - $price));
            return self::format($price - $vat);
        endif;

        return null;
    }

    /**
     * Расчёт цены с НДС
     * @param mixed $price
     * @return float|null
     */
    public static function vat(mixed $price): ?float
    {
        if ($price):
            $vat = self::toFloat($price * self::PRICE_VAT_SETTING / 100);
            return self::format($price + $vat);
        endif;

        return null;
    }

    /**
     * Простое форматирование цены
     * @param float $price
     * @return float
     */
    public static function format(float $price): float
    {
        return number_format(
            str_replace(
                ' ',
                '',
                str_replace(',', '.', $price)
            ), 2, '.', ''
        );
    }

    public static function toFloat(mixed $price): float
    {
        return (float) $price;
    }
}

Использование:

echo "Выделяем НДС от суммы : $price" . PHP_EOL;
echo "Сумма без НДС: " . Price::notVat($price) . PHP_EOL;
echo "-----------------" . PHP_EOL;
echo "Начисляем НДС на сумму : $price" . PHP_EOL;
echo "Сумма с НДС: " . Price::vat($price) . PHP_EOL;
Закрыть