PriceTidy is a PHP library for seamless price rounding and adjustment using various rounding strategies.
To install PriceTidy, you can use Composer:
composer require dnkmdg/price-tidy
Here's a basic example of how to use PriceTidy:
use Dnkmdg\PriceTidy\PriceTidy;
use Dnkmdg\PriceTidy\Strategies\RoundUpToNearestIntegerStrategy;
$priceTidy = new PriceTidy(10.5, 1.25, new RoundUpToNearestIntegerStrategy());
echo $priceTidy->priceIncVat; // Output: 14
PriceTidy supports multiple rounding strategies:
RoundUpToNearestIntegerStrategy
: Rounds up to the nearest integer.RoundUpToNearestNineStrategy
: Rounds up to the nearest nine.RoundUpToNearestTenStrategy
: Rounds up to the nearest ten.RoundUpToNearestHundredStrategy
: Rounds up to the nearest hundred.EuroStrategy
: Example of a custom rounding strategy.
use Dnkmdg\PriceTidy\PriceTidy;
use Dnkmdg\PriceTidy\Strategies\RoundUpToNearestTenStrategy;
$priceTidy = new PriceTidy(10.5, 1.25, new RoundUpToNearestTenStrategy());
echo $priceTidy->priceIncVat; // Output: 20
You can create your own custom rounding strategy by extending the RoundingStrategy
abstract class and implementing the round
method.
Here's an example of a custom rounding strategy that rounds to the nearest five:
namespace Dnkmdg\PriceTidy\Strategies;
class RoundToNearestFiveStrategy extends RoundingStrategy
{
public function round(float $value): float
{
return round($value / 5) * 5;
}
}
To use this custom strategy with PriceTidy:
use Dnkmdg\PriceTidy\PriceTidy;
use Dnkmdg\PriceTidy\Strategies\RoundToNearestFiveStrategy;
$priceTidy = new PriceTidy(10.5, 1.25, new RoundToNearestFiveStrategy());
echo $priceTidy->priceIncVat; // Output will be 15
To run the tests, use PHPUnit:
vendor/bin/pest
This project is licensed under the MIT License.
- Daniel Källstrand Modig ([email protected])
Contributions are welcome! Please open an issue or submit a pull request.
This project is licensed under the MIT License.