Completed
Pull Request — master (#39)
by Jérôme
02:40
created

DoctrineCacheStorage::save()   A

Complexity

Conditions 3
Paths 4

Size

Total Lines 17
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 17
rs 9.4285
cc 3
eloc 10
nc 4
nop 2
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
    public function delete($key)
62
    {
63
        return $this->cache->delete($key);
64
    }
65
}
66