tomwright / currency-php
此包最新版本(0.0.4)的许可证信息不可用。
一个用于简化PHP中货币转换的小型包。
0.0.4
2017-10-24 11:54 UTC
Requires
README
安装
composer install tomwright/currency-php
使用
CurrencyPHP 只是一个基本的包装器。它不能直接进行转换... 话虽如此... 你只需要提供给它汇率。
$rateFetcher = new MyConversionRateFetcher(); $factory = new CurrencyFactory($rateFetcher); $gbp = $factory->create('GBP'); $usd = $factory->create('USD'); $priceInGBP = 100; $priceInUSD = $gbp->convertTo($usd, $priceInGBP); echo $priceInUSD; // 126
汇率抓取器
汇率抓取器是 CurrencyPHP
用于获取汇率的方式。你创建的任何汇率抓取器都应该实现 ConversionRateFetcherInterface
。
现有的汇率抓取器
如果你已经创建了自己的汇率抓取器并希望将其包含在此处,请提交一个拉取请求。
创建自己的
以下汇率抓取器为你提供一些固定的汇率
- GBP to USD
- USD to GBP
- GBP to CAD
- CAD to USD
class FixedRateFetcher implements ConversionRateFetcherInterface { /** * @param Currency $from * @param Currency $to * @return float */ public function getConversionRate(Currency $from, Currency $to) { $rates = [ [ 'from' => 'GBP', 'to' => 'USD', 'rate' => 1.2547, ], [ 'from' => 'USD', 'to' => 'GBP', 'rate' => 0.7974, ], [ 'from' => 'GBP', 'to' => 'CAD', 'rate' => 1.6612, ], [ 'from' => 'CAD', 'to' => 'USD', 'rate' => 0.7539, ], ]; $result = null; foreach ($rates as $rate) { if ($rate['from'] === $from->getCurrencyCode() && $rate['to'] === $to->getCurrencyCode()) { $result = $rate['rate']; } } return $result; } }
处理未知汇率
单向汇率
上面的汇率抓取器具有GBP to USD和USD to GBP的汇率,这效果很好... 但你也会注意到它有CAD to USD,但没有USD to CAD的汇率。已经实现了某些逻辑,这样你只需要存储单向汇率,如果需要的话它会自动反转汇率。
由于这个逻辑,你可以使用上面的汇率抓取器进行USD to CAD的转换而不会出现任何问题。上面可以处理的完整转换列表如下
- GBP to USD
- USD to GBP
- GBP to CAD
- CAD to GBP
- CAD to USD
- USD to CAD
缺失的汇率
如果两种货币之间没有任何汇率,将会抛出一个 UnhandledConversionRate
异常。