Skip to content

rogervila/moneyphp-operations

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MoneyPHP Operations

Build Status StyleCI Quality Gate Status

Latest Stable Version Total Downloads License

MoneyPHP Operations

About

MoneyPHP Operations brings a set of helpers to manipulate money with MoneyPHP.

Install

composer require rogervila/moneyphp-operations

Usage

Note: Pull requests with new helpers are welcome!

Percentage increase

use Money\Money; 
use MoneyOperation\Operation;

$money = Money::EUR('100'); // 1€

$increasedMoney = Operation::of($money)->percentageIncrease('20') // 1.20€

Percentage decrease

use Money\Money; 
use MoneyOperation\Operation;

$money = Money::EUR('288'); // 2.88€

// percentageDecrease accepts positive and negative numeric strings
$decreasedMoney = Operation::of($money)->percentageDecrease('2.99') // 2.79€
$decreasedMoney = Operation::of($money)->percentageDecrease('-2.99') // 2.79€

Percentage difference

use Money\Money; 
use MoneyOperation\Operation;

$moneyA = Money::EUR('100'); // 1€
$moneyB = Money::EUR('120'); // 1.20€

// Returns a float. Use number_format to format the result 
$percentage = Operation::of($moneyA)->percentageDifference($moneyB) // 20.0

Split

use Money\Money; 
use MoneyOperation\Operation;

$money = Money::EUR('1000'); // 10€

/**
 * Will try to increase the first part when cannot be split equally
 * Throws \MoneyOperation\Exceptions\InvalidOperationException when cannot be split at all (for very low values mainly)
 */
$parts = Operation::of($money)->split(3) // [Money::EUR('334'), Money::EUR('333'), Money::EUR('333')]

Join

use Money\Money; 
use MoneyOperation\Operation;

$parts = [Money::EUR('334'), Money::EUR('333'), Money::EUR('333')];

$money = Operation::join($parts) // 10€

Average

use Money\Money; 
use MoneyOperation\Operation;

$parts = [Money::EUR('100'), Money::EUR('200'), Money::EUR('300'), Money::EUR('400')];

$money = Operation::average($parts) // 2,50€

Format

use Money\Money; 
use MoneyOperation\Operation; 

/** 
 * Uses \Money\Formatter\IntlMoneyFormatter
 * Throws \MoneyOperation\Exceptions\InvalidOperationException when intl extension is not available
 */
$money = Operation::of(Money::USD('100'))->format('en_US') // $1.00 

Parse

use Money\Money; 
use MoneyOperation\Operation; 

/** 
 * Uses \Money\Parser\IntlMoneyParser
 * Throws \MoneyOperation\Exceptions\InvalidOperationException when intl extension is not available
 */
$money = Operation::parse('$1.00', 'en_US') // Money::USD('100') 

To Decimal

use Money\Money; 
use MoneyOperation\Operation; 

/** 
 * Uses \Money\Parser\DecimalMoneyFormatter
 */
$money = Operation::of(Money::EUR(54321))->toDecimal() // double(543.21) 

Factory

use Money\Money; 
use MoneyOperation\Operation; 

/**
 * @param int|numeric-string $amount
 * @param Currency|non-empty-string $currency
 */
$money = Operation::factory(100, 'EUR') // Money::EUR('100') 

Author

Created by Roger Vilà

License

MoneyPHP Operations is open-sourced software licensed under the MIT license.

Icons made by Prosymbols Premium from www.flaticon.es

About

Operations for MoneyPHP

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages