Назад к задачам
Junior — Senior
20

Внедрение кеширования результата отчёта

Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

В имеющемся коде реализовано формирование отчёта согласно заданной спецификации. Требуется добавить кэширование получаемого отчёта сроком в 10 минут, используя интерфейс кеша из стандарта PSR‑16 (https://www.php-fig.org/psr/psr-16/#21-cacheinterface).

namespace MyApplication;

final readonly class ReportSpecification
{
    // какие‑то свойства, определяющие содержание отчёта
}

final readonly class Report
{
    // какие‑то свойства с данными отчёта
}

interface Analyst
{
    public function generateReport(ReportSpecification $criteria): Report;
}

final class PostgresAnalyst implements Analyst
{
    public function generateReport(ReportSpecification $criteria): Report
    {
        // тяжёлые запросы с join‑ами и агрегациями

        return new Report(/* данные отчёта */);
    }
}