netglue / boe-rates
Simple utility to download and process historical Bank of England Base Rates
Requires
- php: >=7.0
- zendframework/zend-http: ^2.5
- zendframework/zend-stdlib: ^3.1
Requires (Dev)
- phpunit/phpunit: ^5.5
This package is auto-updated.
Last update: 2024-12-08 07:18:25 UTC
README
This small library retrieves historical bank of england base rate data from the BoE Website, parses the returned XML into a data structure and provides some helpful methods to interrogate the data set.
The Rate Service instance accepts an array of rate data in it's constructor that should take the following form:
[ [ 'date' => // DateTime instance 'rate' => // float ], // ... more elements ];
The Rate Service is an SplPriorityQueue
instance, so $rates->top()
will yield the most recent value because elements are inserted with the timestamp as the priority. Being a queue, iterating over it will remove elements, so clone before iterating if you want the data to stick around or use the $queue->toArray()
method.
Installation
$ composer require netglue/boe-rates
Usage
Client BoeRateClient
use Netglue\Money\BoeRateClient; $client = new BoeRateClient; // Optionally set a different endpoint with… // $client->setUrl('http://somewhere-else.com'); $rates = $client->get();
Service BoeRateService
use Netglue\Money\BoeRateService; $service = new BoeRateService($rates); $first = $service->firstDate(); $last = $service->lastDate(); $mostRecentRate = $service->getRate(); $date = DateTime::createFromFormat('Y-m-d', '2000-06-01'); $otherRate = $service->getRate($date); // Iterate over rates: most recent first… $queue = clone $service; $queue->setExtractFlags($queue::EXTR_DATA); foreach ($queue as $data) { printf( "The BoE base rate changed to %0.2f on %s\n", $data['rate'], $date['date']->format('l jS F Y') ); } // Serialize to JSON for caching. Date format is optional and defaults to 'c' $dateFormat = 'd/m/Y'; $json = $service->toJson($dateFormat); // Initialize service from JSON string $service = BoeRateService::jsonFactory($json, $dateFormat);
About
Netglue makes web based stuff in Devon, England. We hope this is useful to you and we’d appreciate feedback either way :)