- Декоратор должен хранить ссылку на оборачиваемый объект. Нужно изменить конструктор декоратора,
при этом можно добавить $logger прямо в конструктор и избавиться от setLogger(). Изменим строку
$result = parent::get($input);
- Декоратор и Датапровайдер должны реализовавать один интерфейс, поэтому лучше добвить IDataProvider. При этом изменим название метода getResponse() на get().
- Название декоратора лучше заменить на CachingDataProvider, так понятнее.
- В секции catch лучше выкинуть исключение, что бы его можно было обработать в контроллере
- Кэш подготавливается, но не сохраняется, нужно добавить
$this->cache->save($cacheItem);
- В
getCacheKey()
я бы добавил md5(), так ключ получится фиксированной длины и точно строковый. - Добавил логирование ошибки при добавлении в кэш.