Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.95 KB | None | 0 0
  1. <?php
  2. namespace Service;
  3.  
  4. use Psr\Cache\CacheItemPoolInterface;
  5.  
  6. use Carbon\Carbon;
  7.  
  8. class CacheDataProviderDecorator implements DataProviderInterface
  9. {
  10. const EXPIRES_IN_DAYS = 1;
  11.  
  12. private $cache;
  13. private $dataProvider;
  14.  
  15. public function __construct(DataProviderInterface $dataProvider, CacheItemPoolInterface $cache)
  16. {
  17. $this->dataProvider = $dataProvider;
  18. $this->cache = $cache;
  19. }
  20.  
  21. public function get(array $request)
  22. {
  23. $cacheKey = $this->cache->getCacheKey($request);
  24. $cacheItem = $this->cache->getItem($cacheKey);
  25. if ($cacheItem->isHit()) {
  26. return $cacheItem->get();
  27. }
  28. $result = $this->dataProvider->get($request);
  29. $cacheItem
  30. ->set($result)
  31. ->expiresAt(Carbon::now()->addDay(self::EXPIRES_IN_DAYS));
  32.  
  33. return $result;
  34. }
  35.  
  36. public function getCacheKey(array $request)
  37. {
  38. return md5(json_encode($request));
  39. }
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement