Completed
Push — master ( 789220...9af5c5 )
by Jonathan
04:43
created

EncryptingPoolDecorator::proxySave()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 10
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 3
Metric Value
dl 0
loc 10
ccs 6
cts 6
cp 1
rs 9.4286
cc 3
eloc 6
nc 3
nop 2
crap 3
1
<?php
2
namespace Jsq\Cache;
3
4
use Psr\Cache\CacheItemInterface;
5
use Psr\Cache\CacheItemPoolInterface;
6
7
abstract class EncryptingPoolDecorator implements CacheItemPoolInterface
8
{
9
    /** @var CacheItemPoolInterface */
10
    private $decorated;
11
12 882
    public function __construct(CacheItemPoolInterface $decorated)
13
    {
14 882
        $this->decorated = $decorated;
15 882
    }
16
17 462
    public function getItem($key)
18
    {
19 462
        return $this->decorate($this->decorated->getItem($key));
20
    }
21
22 156
    public function hasItem($key)
23
    {
24 156
        return $this->getItem($key)->isHit();
25
    }
26
27
    public function getItems(array $keys = [])
28
    {
29 126
        return array_map(function (CacheItemInterface $inner) {
30 18
            return $this->decorate($inner);
31 126
        }, $this->decorated->getItems($keys));
32
    }
33
34 876
    public function clear()
35
    {
36 876
        return $this->decorated->clear();
37
    }
38
39 114
    public function deleteItems(array $keys)
40
    {
41 114
        return $this->decorated->deleteItems($keys);
42
    }
43
44 126
    public function deleteItem($key)
45
    {
46 126
        return $this->decorated->deleteItem($key);
47
    }
48
49 162
    public function save(CacheItemInterface $item)
50
    {
51 162
        return $this->proxySave($item);
52
    }
53
54 90
    public function saveDeferred(CacheItemInterface $item)
55
    {
56 90
        return $this->proxySave($item, true);
57
    }
58
59 252
    private function proxySave(CacheItemInterface $item, $deferred = false)
60
    {
61 252
        if ($item instanceof EncryptingItemDecorator) {
62 180
            return $this->decorated
63 180
                ->{$deferred ? 'saveDeferred' : 'save'}($item->getDecorated());
64
        }
65
66 72
        throw new InvalidArgumentException('The provided cache item cannot'
67 72
            . ' be saved, as it did not originate from this cache.');
68
    }
69
70 48
    public function commit()
71
    {
72 48
        return $this->decorated->commit();
73
    }
74
75
    abstract protected function decorate(CacheItemInterface $inner);
76
}
77