1<?php 2 3/* 4 * This file is part of the Assetic package, an OpenSky project. 5 * 6 * (c) 2010-2014 OpenSky Project Inc 7 * 8 * For the full copyright and license information, please view the LICENSE 9 * file that was distributed with this source code. 10 */ 11 12namespace Assetic\Cache; 13 14/** 15 * Adds expiration to a cache backend. 16 * 17 * @author Kris Wallsmith <kris.wallsmith@gmail.com> 18 */ 19class ExpiringCache implements CacheInterface 20{ 21 private $cache; 22 private $lifetime; 23 24 public function __construct(CacheInterface $cache, $lifetime) 25 { 26 $this->cache = $cache; 27 $this->lifetime = $lifetime; 28 } 29 30 public function has($key) 31 { 32 if ($this->cache->has($key)) { 33 if (time() < $this->cache->get($key.'.expires')) { 34 return true; 35 } 36 37 $this->cache->remove($key.'.expires'); 38 $this->cache->remove($key); 39 } 40 41 return false; 42 } 43 44 public function get($key) 45 { 46 return $this->cache->get($key); 47 } 48 49 public function set($key, $value) 50 { 51 $this->cache->set($key.'.expires', time() + $this->lifetime); 52 $this->cache->set($key, $value); 53 } 54 55 public function remove($key) 56 { 57 $this->cache->remove($key.'.expires'); 58 $this->cache->remove($key); 59 } 60} 61