Basic   A
last analyzed

Complexity

Total Complexity 11

Size/Duplication

Total Lines 58
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 11
eloc 29
c 1
b 0
f 0
dl 0
loc 58
ccs 30
cts 30
cp 1
rs 10

6 Methods

Rating   Name   Duplication   Size   Complexity  
A set() 0 7 2
A clear() 0 7 2
A exists() 0 7 2
A init() 0 7 1
A get() 0 7 3
A __construct() 0 3 1
1
<?php
2
3
namespace kalanis\kw_cache\Storage;
4
5
6
use kalanis\kw_cache\CacheException;
7
use kalanis\kw_cache\Interfaces\ICache;
8
use kalanis\kw_paths\ArrayPath;
9
use kalanis\kw_paths\PathsException;
10
use kalanis\kw_paths\Stuff;
11
use kalanis\kw_storage\Interfaces\IStorage;
12
use kalanis\kw_storage\StorageException;
13
14
15
/**
16
 * Class Basic
17
 * @package kalanis\kw_cache\Storage
18
 * Caching content in storage
19
 */
20
class Basic implements ICache
21
{
22
    protected IStorage $cacheStorage;
23
    /** @var string[] */
24
    protected array $cachePath = [ICache::EXT_CACHE];
25
26 5
    public function __construct(IStorage $cacheStorage)
27
    {
28 5
        $this->cacheStorage = $cacheStorage;
29 5
    }
30
31 5
    public function init(array $what): void
32
    {
33 5
        $arr = new ArrayPath();
34 5
        $arr->setArray($what);
35 5
        $this->cachePath = array_merge(
36 5
            $arr->getArrayDirectory(),
37 5
            [$arr->getFileName() . ICache::EXT_CACHE]
38
        );
39 5
    }
40
41 3
    public function exists(): bool
42
    {
43
        try {
44 3
            $cachePath = Stuff::arrayToPath($this->cachePath);
45 3
            return $this->cacheStorage->exists($cachePath);
46 1
        } catch (StorageException | PathsException $ex) {
47 1
            throw new CacheException($ex->getMessage(), $ex->getCode(), $ex);
48
        }
49
    }
50
51 2
    public function set(string $content): bool
52
    {
53
        try {
54 2
            $cachePath = Stuff::arrayToPath($this->cachePath);
55 2
            return $this->cacheStorage->write($cachePath, $content);
56 1
        } catch (StorageException | PathsException $ex) {
57 1
            throw new CacheException($ex->getMessage(), $ex->getCode(), $ex);
58
        }
59
    }
60
61 2
    public function get(): string
62
    {
63
        try {
64 2
            $cachePath = Stuff::arrayToPath($this->cachePath);
65 2
            return $this->exists() ? strval($this->cacheStorage->read($cachePath)) : '';
66 1
        } catch (StorageException | PathsException $ex) {
67 1
            throw new CacheException($ex->getMessage(), $ex->getCode(), $ex);
68
        }
69
    }
70
71 2
    public function clear(): void
72
    {
73
        try {
74 2
            $cachePath = Stuff::arrayToPath($this->cachePath);
75 2
            $this->cacheStorage->remove($cachePath);
76 1
        } catch (StorageException | PathsException $ex) {
77 1
            throw new CacheException($ex->getMessage(), $ex->getCode(), $ex);
78
        }
79 1
    }
80
}
81