Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
 
3
namespace Kevinrob\GuzzleCache\Storage;
4
 
5
use Doctrine\Common\Cache\Cache;
6
use Kevinrob\GuzzleCache\CacheEntry;
7
 
8
class DoctrineCacheStorage implements CacheStorageInterface
9
{
10
    /**
11
     * @var Cache
12
     */
13
    protected $cache;
14
 
15
    /**
16
     * @param Cache $cache
17
     */
18
    public function __construct(Cache $cache)
19
    {
20
        $this->cache = $cache;
21
    }
22
 
23
    /**
24
     * {@inheritdoc}
25
     */
26
    public function fetch($key)
27
    {
28
        try {
29
            $cache = unserialize($this->cache->fetch($key));
30
            if ($cache instanceof CacheEntry) {
31
                return $cache;
32
            }
33
        } catch (\Exception $ignored) {
34
            return;
35
        }
36
 
37
        return;
38
    }
39
 
40
    /**
41
     * {@inheritdoc}
42
     */
43
    public function save($key, CacheEntry $data)
44
    {
45
        try {
46
            $lifeTime = $data->getTTL();
47
            if ($lifeTime >= 0) {
48
                return $this->cache->save(
49
                    $key,
50
                    serialize($data),
51
                    $lifeTime
52
                );
53
            }
54
        } catch (\Exception $ignored) {
55
            // No fail if we can't save it the storage
56
        }
57
 
58
        return false;
59
    }
60
 
61
    /**
62
     * {@inheritdoc}
63
     */
64
    public function delete($key)
65
    {
66
        try {
67
            return $this->cache->delete($key);
68
        } catch (\Exception $ignored) {
69
            // Don't fail if we can't delete it
70
        }
71
 
72
        return false;
73
    }
74
}