Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace Service;
- use Psr\Cache\CacheItemPoolInterface;
- use Carbon\Carbon;
- class CacheDataProviderDecorator implements DataProviderInterface
- {
- const EXPIRES_IN_DAYS = 1;
- private $cache;
- private $dataProvider;
- public function __construct(DataProviderInterface $dataProvider, CacheItemPoolInterface $cache)
- {
- $this->dataProvider = $dataProvider;
- $this->cache = $cache;
- }
- public function get(array $request)
- {
- $cacheKey = $this->cache->getCacheKey($request);
- $cacheItem = $this->cache->getItem($cacheKey);
- if ($cacheItem->isHit()) {
- return $cacheItem->get();
- }
- $result = $this->dataProvider->get($request);
- $cacheItem
- ->set($result)
- ->expiresAt(Carbon::now()->addDay(self::EXPIRES_IN_DAYS));
- return $result;
- }
- public function getCacheKey(array $request)
- {
- return md5(json_encode($request));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement