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