Standardized wrapper for popular currency rate APIs. Currently supports FixerIO, CurrencyLayer, Open Exchange Rates and Exchange Rates API.

Overview

💱 Wrapper for popular Currency Exchange Rate APIs

A PHP API Wrapper to offer a unified programming interface for popular Currency Rate APIs.

Version Installs PHP version Travis CI Coverage Coverage Maintainability License

Dont worry about your favorite currency conversion service suddenly shutting down or switching plans on you. Switch away easily, without changing your code.

Inspiration 💅

I needed a currency conversion API for my travel website but could not find a good PHP package. The idea of the Rackbeat/php-currency-api package came closest but unfortunately it was just a stub and not implemented.

Features 🌈

  • Support for multiple different APIs through the use of drivers
  • A fluent interface to make retrieving exchange rates convenient and fast
  • Consistent return interface that is independent of the driver being used
  • Calculations can be made based on the returned data

Supported APIs 🌐

Service Identifier
FixerIO fixerio
CurrencyLayer currencylayer
Open Exchange Rates openexchangerates
Exchange Rates API exchangeratesapi

If you want to see more services added, feel free to open an issue!

Prerequisites 📚

  • PHP 8.x or PHP 7.3+ or higher (tested on both 7.3 and 7.4)
  • The composer dependency manager for PHP
  • An account with one or more of the API providers listed above

Installation 🚀

Simply require the package using composer and you're good to go!

$ composer require otherguy/php-currency-api

Usage 🛠

Currency Symbol Helper

The Otherguy\Currency\Symbol class provides constants for each supported currency.

Note: You are not required to use Otherguy\Currency\Symbol to specify symbols. It's simply a convenience helper and does not need to be used. You can simply pass strings like 'USD', 'EUR', ... to all methods.

// 'USD'
$symbol = Otherguy\Currency\Symbol::USD;

Use the all() method to retrieve an array of all currency symbols:

// [ 'AED', 'AFN', ... 'ZWL' ]
$symbols = Otherguy\Currency\Symbol::all();

The names() method returns an associative array with currency names instead:

// [ 'AED' => 'United Arab Emirates Dirham', 'AFN' => 'Afghan Afghani', ... ]
$symbols = Otherguy\Currency\Symbol::names();

To get the name of a single currency, use the name() method:

// 'United States Dollar'
$symbols = Otherguy\Currency\Symbol::name(Otherguy\Currency\Symbol::USD);

Initialize API Instance

$currency = Otherguy\Currency\DriverFactory::make('fixerio'); // driver identifier from supported drivers.

To get a list of supported drivers, use the getDrivers() method:

// [ 'mock', 'fixerio', 'currencylayer', ... ]
$drivers = Otherguy\Currency\DriverFactory::getDrivers()

Set Access Key

Most API providers require you to sign up and use your issued access key to authenticate against their API. You can specify your access key like so:

$currency->accessKey('your-access-token-goes-here');

Set Configuration Options

To set further configuration options, you can use the config() method. An example is CurrencyLayer's JSON formatting option.

$currency->config('format', '1');

Set Base Currency

You can use either from() or source() to set the base currency. The methods are identical.

Note: Each driver sets its own default base currency. FixerIO uses EUR as base currency while CurrencyLayer uses USD.

Most services only allow you to change the base currency in their paid plans. The driver will throw a Otherguy\Currency\Exceptions\ApiException if your current plan does not allow changing the base currency.

$currency->source(Otherguy\Currency\Symbol::USD);
$currency->from(Otherguy\Currency\Symbol::USD);

Set Return Currencies

You can use either to() or symbols() to set the return currencies. The methods are identical. Pass a single currency or an array of currency symbols to either of these methods.

Note: Pass an empty array to return all currency symbols supported by this driver. This is the default if you don't call the method at all.

$currency->to(Otherguy\Currency\Symbol::BTC);
$currency->symbols([Otherguy\Currency\Symbol::BTC, Otherguy\Currency\Symbol::EUR, Otherguy\Currency\Symbol::USD]);

Latest Rates

This retrieves the most recent exchange rates and returns a ConversionResult object.

$currency->get(); // Get latest rates for selected symbols, using set base currency
$currency->get('DKK');  // Get latest rates for selected symbols, using DKK as base currency

Historical Rates

To retrieve historical exchange rates, use the historical() method. Note that you need to specify a date either as a method parameter or by using the date() methods. See Fluent Interface for more information.

$currency->date('2010-01-01')->historical();
$currency->historical('2018-07-01');

Convert Amount

Use the convert() method to convert amounts between currencies.

Note: Most API providers don't allow access to this method using your free account. You can still use the Latest Rates or Historical Rates endpoints and perform calculations or conversions on the ConversionResult object.

$currency->convert(10.00, 'USD', 'THB'); // Convert 10 USD to THB
$currency->convert(122.50, 'NPR', 'EUR', '2019-01-01'); // Convert 122.50 NPR to EUR using the rates from January 1st, 2019

Fluent Interface

Most methods can be used with a fluent interface, allowing you to chain method calls for more readable code:

// Namespaces are omitted for readability!
DriverFactory::make('driver')->from(Symbol::USD)->to(Symbol::EUR)->get();
DriverFactory::make('driver')->from(Symbol::USD)->to(Symbol::NPR)->date('2013-03-02')->historical();
DriverFactory::make('driver')->from(Symbol::USD)->to(Symbol::NPR)->amount(12.10)->convert();

Conversion Result

The get() and historical() endpoints return a ConversionResult object. This object allows you to perform calculations and conversions easily.

Note: Even though free accounts of most providers do not allow you to change the base currency, you can still use the ConversionResult object to change the base currency later. This might not be as accurate as changing the base currency directly, though.

Note: To convert between two currencies, you need to request both of them in your initial get() or historical() request. You can not convert between currencies that have not been fetched!

See the following code for some examples of what you can do with the ConversionResult object.

$result = DriverFactory::make('driver')->from(Symbol::USD)->to([Symbol::EUR, Symbol::GBP])->get();

// [ 'USD' => 1.00, 'EUR' => 0.89, 'GBP' => 0.79 ]
$result->all();

// 'USD'
$result->getBaseCurrency();

// '2019-06-11'
$result->getDate();

// 0.89
$result->rate(Symbol::EUR);

// CurrencyException("No conversion result for BTC!");
$result->rate(Symbol::BTC);

// 5.618
$result->convert(5.0, Symbol::EUR, Symbol::USD);

// [ 'USD' => 1.13, 'EUR' => 1.00, 'GBP' => 0.89 ]
$result->setBaseCurrency(Symbol::EUR)->all();

// 1.12
$result->setBaseCurrency(Symbol::GBP)->rate(Symbol::EUR);

Contributing 🚧

Pull Requests are more than welcome! I'm striving for 100% test coverage for this repository so please make sure to add tests for your code.

Comments
  • Bump phpunit/phpunit from 7.5.12 to 7.5.13

    Bump phpunit/phpunit from 7.5.12 to 7.5.13

    Bumps phpunit/phpunit from 7.5.12 to 7.5.13.

    Changelog

    Sourced from phpunit/phpunit's changelog.

    [7.5.13] - 2019-06-19

    Fixed

    • Fixed #3722: getObjectForTrait() does not work for traits that declare a constructor
    • Fixed #3723: Unescaped dash in character group in regular expression
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot ignore this [patch|minor|major] version will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in the .dependabot/config.yml file in this repo:

    • Update frequency (including time of day and day of week)
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Pull request limits (per update run and/or open at any time)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)

    Finally, you can contact us by mentioning @dependabot.

    dependabot 🤖 
    opened by dependabot-preview[bot] 4
  • Bump phpunit/phpunit from 9.5.4 to 9.5.5

    Bump phpunit/phpunit from 9.5.4 to 9.5.5

    Bumps phpunit/phpunit from 9.5.4 to 9.5.5.

    Changelog

    Sourced from phpunit/phpunit's changelog.

    [9.5.5] - 2021-06-05

    Changed

    • The test result cache (the storage for which is implemented in PHPUnit\Runner\DefaultTestResultCache) no longer uses PHP's serialize() and unserialize() functions for persistence. It now uses a versioned JSON format instead that is independent of PHP implementation details (see #3581 and #4662 for examples why this is a problem). When PHPUnit tries to load the test result cache from a file that does not exist, or from a file that does not contain data in JSON format, or from a file that contains data in a JSON format version other than the one used by the currently running PHPUnit version, then this is considered to be a "cache miss". An empty DefaultTestResultCache object is created in this case. This should also prevent PHPUnit from crashing when trying to load a test result cache file created by a different version of PHPUnit (see #4580 for example).

    Fixed

    • #4632: TestDox result printer does not handle repeated test execution correctly
    • #4678: Stubbed methods with iterable return types should return empty array by default
    • #4692: Annotations in single-line doc-comments are not handled correctly
    • #4694: TestCase::getMockFromWsdl() does not work with PHP 8.1-dev
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependabot 🤖 
    opened by dependabot[bot] 3
  • Bump phpunit/phpunit from 9.5.3 to 9.5.4

    Bump phpunit/phpunit from 9.5.3 to 9.5.4

    Bumps phpunit/phpunit from 9.5.3 to 9.5.4.

    Changelog

    Sourced from phpunit/phpunit's changelog.

    [9.5.4] - 2021-03-23

    Fixed

    • #4630: Empty test case class causes error in TestDox XML logger
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in the .dependabot/config.yml file in this repo:

    • Update frequency
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
    dependabot 🤖 
    opened by dependabot-preview[bot] 3
  • Bump php-coveralls/php-coveralls from 2.3.0 to 2.4.1

    Bump php-coveralls/php-coveralls from 2.3.0 to 2.4.1

    Bumps php-coveralls/php-coveralls from 2.3.0 to 2.4.1.

    Release notes

    Sourced from php-coveralls/php-coveralls's releases.

    v2.4.1

    Bug fix

    • #298 Fix support of branch name with hyphen and "(no branch)"

    v2.4.0

    CD broken - no .phar file available! Use v2.4.1+ instead!

    Enhancement

    • #296 Add Github Actions and COVERALLS_FLAG_NAME support
    • #295 Add support for PHP 8 + PHPUnit 9
    • #289 Add insecure option

    Miscellaneous

    • #297 DX: .gitignore cache PHPUnit
    Changelog

    Sourced from php-coveralls/php-coveralls's changelog.

    2.4.1

    Bug fix

    • #298 Fix support of branch name with hyphen and "(no branch)"

    2.4.0

    Enhancement

    • #296 Add Github Actions and COVERALLS_FLAG_NAME support
    • #295 Add support for PHP 8 + PHPUnit 9
    • #289 Add insecure option

    Miscellaneous

    • #297 DX: .gitignore cache PHPUnit
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in the .dependabot/config.yml file in this repo:

    • Update frequency
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
    dependabot 🤖 
    opened by dependabot-preview[bot] 3
  • Bump php-coveralls/php-coveralls from 2.2.0 to 2.3.0

    Bump php-coveralls/php-coveralls from 2.2.0 to 2.3.0

    Bumps php-coveralls/php-coveralls from 2.2.0 to 2.3.0.

    Release notes

    Sourced from php-coveralls/php-coveralls's releases.

    v2.3.0

    Enhancement

    • #290 Allow to specify endpoint in arguments
    • #288 Add Guzzle 7 support
    • #279 Added COVERALLS_PARALLEL support and Configured CI_BUILD_NUMBER for Travis CI

    Miscellaneous

    • #294 DX: Allow PHPUnit 7
    • #292 CI: reduce amount of jobs
    • #291 DX: Configurator - reduce cyclomatic complexity
    • #286 Fix incorrect version in README
    • #283 Update .travis.yml to include PHP 7.4
    Changelog

    Sourced from php-coveralls/php-coveralls's changelog.

    2.3.0

    Enhancement

    • #290 Allow to specify endpoint in arguments
    • #288 Add Guzzle 7 support
    • #279 Added COVERALLS_PARALLEL support and Configured CI_BUILD_NUMBER for Travis CI

    Miscellaneous

    • #294 DX: Allow PHPUnit 7
    • #292 CI: reduce amount of jobs
    • #291 DX: Configurator - reduce cyclomatic complexity
    • #286 Fix incorrect version in README
    • #283 Update .travis.yml to include PHP 7.4
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in the .dependabot/config.yml file in this repo:

    • Update frequency
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
    dependabot 🤖 
    opened by dependabot-preview[bot] 3
  • Bump guzzlehttp/guzzle from 6.5.4 to 6.5.5

    Bump guzzlehttp/guzzle from 6.5.4 to 6.5.5

    Bumps guzzlehttp/guzzle from 6.5.4 to 6.5.5.

    Changelog

    Sourced from guzzlehttp/guzzle's changelog.

    6.5.5 - 2020-06-16

    • Unpin version constraint for symfony/polyfill-intl-idn #2678
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in the .dependabot/config.yml file in this repo:

    • Update frequency
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
    dependabot 🤖 
    opened by dependabot-preview[bot] 3
  • Bump guzzlehttp/guzzle from 6.5.1 to 6.5.2

    Bump guzzlehttp/guzzle from 6.5.1 to 6.5.2

    Bumps guzzlehttp/guzzle from 6.5.1 to 6.5.2.

    Release notes

    Sourced from guzzlehttp/guzzle's releases.

    6.5.2

    • idn_to_ascii() fix for old PHP versions #2489
    Changelog

    Sourced from guzzlehttp/guzzle's changelog.

    6.5.2 - 2019-12-23

    • idn_to_ascii() fix for old PHP versions #2489
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in the .dependabot/config.yml file in this repo:

    • Update frequency
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
    dependabot 🤖 
    opened by dependabot-preview[bot] 3
  • Bump guzzlehttp/guzzle from 6.5.0 to 6.5.1

    Bump guzzlehttp/guzzle from 6.5.0 to 6.5.1

    Bumps guzzlehttp/guzzle from 6.5.0 to 6.5.1.

    Release notes

    Sourced from guzzlehttp/guzzle's releases.

    6.5.1

    • Better defaults for PHP installations with old ICU lib #2454
    • IDN support for redirects #2424
    Changelog

    Sourced from guzzlehttp/guzzle's changelog.

    6.5.1 - 2019-12-21

    • Better defaults for PHP installations with old ICU lib #2454
    • IDN support for redirects #2424
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in the .dependabot/config.yml file in this repo:

    • Update frequency
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
    dependabot 🤖 
    opened by dependabot-preview[bot] 3
  • Bump phpunit/phpunit from 7.5.16 to 7.5.17

    Bump phpunit/phpunit from 7.5.16 to 7.5.17

    Bumps phpunit/phpunit from 7.5.16 to 7.5.17.

    Changelog

    Sourced from phpunit/phpunit's changelog.

    [7.5.17] - 2019-10-28

    Fixed

    • Fixed #3727: Problem hidden by PHPUnit's error handler
    • Fixed #3863: \Countable needs to be checked before \EmptyIterator
    Commits
    • 4c92a15 Prepare release
    • 6d01bd0 Update ChangeLog
    • d703dcb Count Constaint - check \Countable first
    • 24976a8 Prevent undefined stdout index error - #3727
    • 2d33f54 Enhancement: Add test for execution with --version option
    • 62b52dd Add early exit and simplify condition
    • ea510c5 Use finally insead of isset on error
    • 7be53b7 Let Git know that tools/* are binary files
    • d1e83a7 Enhancement: Keep settings sorted
    • bec7a7c Enhancement: Keep unsupported sections sorted by name
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in the .dependabot/config.yml file in this repo:

    • Update frequency
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
    dependabot 🤖 
    opened by dependabot-preview[bot] 3
  • Bump phpunit/phpunit from 7.5.14 to 7.5.15

    Bump phpunit/phpunit from 7.5.14 to 7.5.15

    Bumps phpunit/phpunit from 7.5.14 to 7.5.15.

    Changelog

    Sourced from phpunit/phpunit's changelog.

    [7.5.15] - 2019-08-21

    Changed

    • Implemented #3765: Use ReflectionType::getName() instead of ReflectionType::__toString() (which is deprecated in PHP 7.4)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Note: This repo was added to Dependabot recently, so you'll receive a maximum of 5 PRs for your first few update runs. Once an update run creates fewer than 5 PRs we'll remove that limit.

    You can always request more updates by clicking Bump now in your Dependabot dashboard.

    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in the .dependabot/config.yml file in this repo:

    • Update frequency (including time of day and day of week)
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Pull request limits (per update run and/or open at any time)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)

    Finally, you can contact us by mentioning @dependabot.

    dependabot 🤖 
    opened by dependabot-preview[bot] 3
  • Configure Renovate

    Configure Renovate

    WhiteSource Renovate

    Welcome to Renovate! This is an onboarding PR to help you understand and configure settings before regular Pull Requests begin.

    🚦 To activate Renovate, merge this Pull Request. To disable Renovate, simply close this Pull Request unmerged.


    Detected Package Files

    • composer.json (composer)

    Configuration Summary

    Based on the default config's presets, Renovate will:

    • Start dependency updates only once this onboarding PR is merged
    • Separate major versions of dependencies into individual branches/PRs
    • Do not separate patch and minor upgrades into separate PRs for the same dependency
    • Upgrade to unstable versions only if the existing version is unstable
    • Raise PRs immediately (after branch is created)
    • If semantic commits detected, use semantic commit type fix for dependencies and chore for all others
    • Keep existing branches updated even when not scheduled
    • Disable automerging feature - wait for humans to merge all PRs
    • Ignore node_modules, bower_components, vendor and various test/tests directories
    • Autodetect whether to pin dependencies or maintain ranges
    • Rate limit PR creation to a maximum of two per hour
    • Limit to maximum 20 open PRs at any time
    • Group known monorepo packages together
    • Use curated list of recommended non-monorepo package groupings
    • Ignore spring cloud 1.x releases
    • Ignore http4s digest-based 1.x milestones

    🔡 Would you like to change the way Renovate is upgrading your dependencies? Simply edit the renovate.json in this branch with your custom config and the list of Pull Requests in the "What to Expect" section below will be updated the next time Renovate runs.


    What to Expect

    With your current configuration, Renovate will create 1 Pull Request:

    Pin dependencies

    ❓ Got questions? Check out Renovate's Docs, particularly the Getting Started section. If you need any further assistance then you can also request help here.


    This PR has been generated by WhiteSource Renovate. View repository job log here.

    opened by renovate[bot] 2
  • Bump phpunit/php-code-coverage from 9.2.21 to 9.2.23

    Bump phpunit/php-code-coverage from 9.2.21 to 9.2.23

    Bumps phpunit/php-code-coverage from 9.2.21 to 9.2.23.

    Changelog

    Sourced from phpunit/php-code-coverage's changelog.

    [9.2.23] - 2022-12-28

    Fixed

    • #971: PHP report does not handle serialized code coverage data larger than 2 GB
    • #974: Executable line analysis fails for declarations with enumerations and unions

    [9.2.22] - 2022-12-18

    Fixed

    • #969: Fixed identifying line with throw as executable
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependabot 🤖 
    opened by dependabot[bot] 0
  • Bump phpunit/phpunit from 9.5.26 to 9.5.27

    Bump phpunit/phpunit from 9.5.26 to 9.5.27

    Bumps phpunit/phpunit from 9.5.26 to 9.5.27.

    Changelog

    Sourced from phpunit/phpunit's changelog.

    [9.5.27] - 2022-MM-DD

    Fixed

    • #5113: PHP error instead of PHPUnit error when trying to create test double for readonly class
    Commits
    • a2bc7ff Prepare release
    • 1b09a9a Exclude source file with PHP 8.2 syntax
    • ac259bc Update Psalm baseline
    • 9e0968d Update ChangeLog
    • 8635ff9 Skip test on PHP < 8.2
    • faa1515 Implement logic to blocks readonly classes to be doubled.
    • 5c6e811 Merge branch '8.5' into 9.5
    • cc19735 Update tools
    • c5d3542 Assert that we have a DOMElement here
    • a653302 Document collected/iterated type using Psalm template
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependabot 🤖 
    opened by dependabot[bot] 0
  • Bump nikic/php-parser from 4.15.1 to 4.15.2

    Bump nikic/php-parser from 4.15.1 to 4.15.2

    Bumps nikic/php-parser from 4.15.1 to 4.15.2.

    Release notes

    Sourced from nikic/php-parser's releases.

    PHP-Parser 4.15.2

    Fixed

    • Fixed parsing of large hex float literals that contain an "e" character.
    • Fixed tests to pass on 32-bit.
    • Fixed generation of invalid code when using formatting-preserving pretty printer with code that uses inline HTML.
    Changelog

    Sourced from nikic/php-parser's changelog.

    Version 4.15.2 (2022-11-12)

    Fixed

    • Fixed parsing of large hex float literals that contain an "e" character.
    • Fixed tests to pass on 32-bit.
    • Fixed generation of invalid code when using formatting-preserving pretty printer with code that uses inline HTML.
    Commits
    • f59bbe4 Release PHP-Parser 4.15.2
    • 2e11dee Bail out on PHP tags in removed code
    • a4fe65b Add more tests for formatting preservation with InlineHTML
    • e072fd2 Adjust tests to work on 32-bit
    • 7027899 Fix parsing of large hex floats containing "e"
    • 2f1fd78 Fixed type in UnionType
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependabot 🤖 
    opened by dependabot[bot] 0
Releases(1.7)
Owner
Alexander Graf
Interested in all things tech 👨‍💻 • And mountains 🏔 • And diving 🏝
Alexander Graf
Library download currency rate and save in database, It's designed to be extended by any available data source.

Library download currency rate and save in database, It's designed to be extended by any available data source.

Flexmind. Krzysztof Bielecki 2 Oct 6, 2021
World Currency list in PHP constants and in array (Currency::USD)

World Currency list in PHP constants and in array (Currency::USD) If you need to work with currencies in the code and describe each time "USD", "EUR"

Krepysh 4 Jun 27, 2022
Simple Symfony currency exchange demo application (CLI)

Symfony currency exchange demo Keynotes Using a small Symfony installation as possible Using SQLite database for simplicity but with price of some cav

Vladimir Martsul 9 Oct 21, 2022
This document provides the details related to Remittance API. This APIs is used to initiate payment request from Mobile client/others exchange house.

City Bank Remittance API This is where your description should go. Limit it to a paragraph or two. Consider adding a small example. Installation You c

MD ARIFUL HAQUE 2 Oct 2, 2022
Lightweight PHP wrapper for OVH APIs. That's the easiest way to use OVH.com APIs in your PHP applications.

This PHP package is a lightweight wrapper for OVH APIs. That's the easiest way to use OVH.com APIs in your PHP applications.

OVHcloud 263 Dec 14, 2022
The Current US Version of PHP-Nuke Evolution Xtreme v3.0.1b-beta often known as Nuke-Evolution Xtreme. This is a hardened version of PHP-Nuke and is secure and safe. We are currently porting Xtreme over to PHP 8.0.3

2021 Nightly Builds Repository PHP-Nuke Evolution Xtreme Developers TheGhost - Ernest Allen Buffington (Lead Developer) SeaBeast08 - Sebastian Scott B

Ernest Buffington 7 Aug 28, 2022
WARNING! This software is currently non-functional. - A system which makes installing Jexactyl far, far easier.

Jexactyl Assistant A system which makes installing Jexactyl far, far easier. WARNING ?? This software is currently in heavy alpha testing and WILL NOT

Jexactyl 7 Nov 14, 2022
Ip2region is a offline IP location library with accuracy rate of 99.9% and 0.0x millseconds searching performance. DB file is ONLY a few megabytes with all IP address stored. binding for Java,PHP,C,Python,Nodejs,Golang,C#,lua. Binary,B-tree,Memory searching algorithm

Ip2region是什么? ip2region - 准确率99.9%的离线IP地址定位库,0.0x毫秒级查询,ip2region.db数据库只有数MB,提供了java,php,c,python,nodejs,golang,c#等查询绑定和Binary,B树,内存三种查询算法。 Ip2region特性

Lion 12.6k Dec 30, 2022
Laravel Sliding Window Rate Limiter

Laravel Sliding Window Rate Limiter This package provides an easy way to limit any action during a specified time window. You may be familiar with Lar

Λгi 19 Oct 9, 2022
Buy and sell crypto top 100 crypto with our fake currency. Donate to and use our referal links for discounts

PLEASE ENABLE SQLITE3 AND GD OR GD2 IN XAMPP TO RUN THE APP! (SEE HOW_TO_SETUP_XAMPP.gif) ![alt text](https://github.com/Tby23rd/Project1-Cryptosimul

Tabitha Maru 0 Dec 26, 2021
A privacy respecting free as in freedom meta search engine for Google and popular torrent sites

A privacy respecting free as in freedom meta search engine for Google and popular torrent sites

null 329 Dec 27, 2022
A money and currency library for PHP

Brick\Money A money and currency library for PHP. Introduction Working with financial data is a serious matter, and small rounding mistakes in an appl

Brick 1.3k Jan 5, 2023
Extract and evolution of the magento2-currency-precision module from the magento2-jp project from @Magento

Currency Precision Module for Magento 2 This module aims to help merchants to manage easily their currency precision in Magento 2. DISCLAIMER Initiall

OpenGento 3 Dec 17, 2021
A plugin for working with popular money libraries in Pest

This package is a plugin for Pest PHP. It allows you to write tests against monetary values provided by either brick/money or moneyphp/money using the same declarative syntax you're used to with Pest's expectation syntax.

Luke Downing 19 Oct 30, 2022
The tool converts different error reporting standards for deep compatibility with popular CI systems (TeamCity, IntelliJ IDEA, GitHub Actions, etc).

JBZoo / CI-Report-Converter Why? Installing Using as GitHub Action Example GitHub Action workflow Available Directions Help description in terminal Co

JBZoo Toolbox 17 Jun 16, 2022
PHP Class Encoding featuring popular Encoding::toUTF8() function --formerly known as forceUTF8()-- that fixes mixed encoded strings.

forceutf8 PHP Class Encoding featuring popular \ForceUTF8\Encoding::toUTF8() function --formerly known as forceUTF8()-- that fixes mixed encoded strin

Sebastián Grignoli 1.6k Dec 22, 2022
Xero - a digital currency that allows instant payments to anyone, anywhere

Xeros is a digital currency that allows instant payments to anyone, anywhere. Xeros has been written completely in PHP and mostly follows the technical design of Bitcoin. Xeros uses P2P technology to operate with no central server.

Kladskull 79 Dec 26, 2022
A Laravel Wrapper for the Binance API. Now easily connect and consume the Binance Public & Private API in your Laravel apps without any hassle.

This package provides a Laravel Wrapper for the Binance API and allows you to easily communicate with it. Important Note This package is in early deve

Moinuddin S. Khaja 7 Dec 7, 2022