Immutable PHP Currency Converter
Published on by Paul Redmond
The gocanto/converter
composer package by Gustavo Ocanto is an immutable PHP currency converter that’s data-agnostic.
Related: Laravel Money is a package for formatting money in Laravel projects.
You need to bring your own database or repository of currency conversion data, and implement a data layer for the conversions. Here’s an example repository from the project:
<?php namespace Gocanto\Converter\Examples; use Gocanto\Converter\CurrencyValue;use Gocanto\Converter\Interfaces\CurrenciesRepositoryInterface; class CurrenciesRepositoryExample implements CurrenciesRepositoryInterface{ /** * @param string $code * @return CurrencyValue */ public function getCurrentRate(string $code) : CurrencyValue { // here, you need to write any related logic to query your DB. Once you have this info, // you will have to create the currency value object with the valid info as so: return new CurrencyValue('U.S. Dollars', 'USD', '$', 0.731271); }}
Next, here’s an example of a currency conversion backed by the data repository:
use Gocanto\Converter\Examples\CurrenciesRepositoryExample;use Gocanto\Converter\Converter;use Gocanto\Converter\RoundedNumber; $repository = new CurrenciesRepositoryExample;$converter = new Converter($repository); $conversion = $converter ->withAmount(RoundedNumber::make(10)) ->withCurrency('SGD') ->convertTo('USD');
You can learn more about this package, get full installation instructions, and view the source code on GitHub at gocanto/converter.