Network::__construct()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 14
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 9
nc 3
nop 1
dl 0
loc 14
rs 9.9666
c 0
b 0
f 0
1
<?php
2
/**
3
 * Network adaptor
4
 * User: moyo
5
 * Date: 24/10/2017
6
 * Time: 12:07 PM
7
 */
8
9
namespace Carno\Cache\Adaptors;
10
11
use Carno\Cache\Chips\Delegate;
12
use Carno\Cache\Chips\Prefixed;
13
use Carno\Cache\Chips\Properties;
14
use Carno\Cache\Chips\Storage;
15
use Carno\Cache\Exception\IllegalNetworkDriverException;
16
use Carno\Cache\Refreshing;
17
use Carno\Cache\Stores\Redis as RedisStorage;
18
use Carno\Redis\Cluster as RedisCluster;
19
use Carno\Redis\Redis as RedisClient;
20
21
abstract class Network
22
{
23
    use Properties, Prefixed, Storage, Delegate;
24
25
    /**
26
     * Network constructor.
27
     * @param Refreshing $refresher
28
     */
29
    final public function __construct(Refreshing $refresher)
30
    {
31
        $this->refresher = $refresher;
32
33
        switch ($driver = $this->driver()) {
34
            case $driver instanceof RedisClient:
35
            case $driver instanceof RedisCluster:
36
                $storage = new RedisStorage($driver);
37
                break;
38
            default:
39
                throw new IllegalNetworkDriverException;
40
        }
41
42
        $this->backend = $storage;
43
    }
44
45
    /**
46
     * @return mixed
47
     */
48
    abstract protected function driver() : object;
49
}
50