Логика получения курсов валют следующая. Вызывающий код может получить их из кеша, из базы данных и из внешнего источника по http. В случае, если курса валют нет в кеше, надо проверить базу, и если там есть, положить в кеш. Если в базе нет -- проверить внешний источник и положить и в базу, и в кеш. Надо реализовать эту логику. Предполагается, что она будет использоваться в куче разных мест.
Пример вызова кода
<?php
use App\Model\Currency;
$id = new Currency\Id('...');
$httpClient = '...';
$connection = '...';
$cacheClient = '...';
$cacheStorage = new Currency\Cache\Storage();
$databaseStorage = new Currency\Database\Storage();
try {
$currency = (
new Currency\CurrencyFactory(
$id,
$cacheStorage,
$databaseStorage,
$httpClient,
$connection,
$cacheClient
)
)
->checkInCache()
->checkInDatabase()
->checkInHttp()
->create();
} catch (\App\Model\EntityNotExistException $e) {
// обработка исключительной ситуации, когда найти курс валют не удалось
}