Completed
Push — master ( 533b47...6c16e6 )
by Gabriel
02:01
created

HasAdapterTrait   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 59
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Test Coverage

Coverage 61.11%

Importance

Changes 0
Metric Value
wmc 7
lcom 1
cbo 0
dl 0
loc 59
ccs 11
cts 18
cp 0.6111
rs 10
c 0
b 0
f 0

6 Methods

Rating   Name   Duplication   Size   Complexity  
A getAdapter() 0 8 2
A setAdapter() 0 4 1
A initAdapter() 0 4 1
A setAdapterName() 0 4 1
A newAdapter() 0 6 1
A getAdapterClass() 0 4 1
1
<?php
2
3
namespace Nip\Database\Adapters;
4
5
/**
6
 * Trait HasAdapterTrait
7
 * @package Nip\Database\Adapters
8
 */
9
trait HasAdapterTrait
10
{
11
    protected $_adapter = null;
12
13
    /**
14
     * @return AbstractAdapter
15
     */
16 3
    public function getAdapter()
17
    {
18 3
        if ($this->_adapter == null) {
19
            $this->initAdapter();
20
        }
21
22 3
        return $this->_adapter;
23
    }
24
25
    /**
26
     * @param $adapter
27
     */
28 17
    public function setAdapter($adapter)
29
    {
30 17
        $this->_adapter = $adapter;
31 17
    }
32
33
    public function initAdapter()
34
    {
35
        $this->setAdapterName('MySQLi');
36
    }
37
38
    /**
39
     * @param $name
40
     */
41
    public function setAdapterName($name)
42
    {
43
        $this->setAdapter($this->newAdapter($name));
44
    }
45
46
    /**
47
     * @param $name
48
     *
49
     * @return AbstractAdapter
50
     */
51 1
    public function newAdapter($name)
52
    {
53 1
        $class = static::getAdapterClass($name);
54
55 1
        return new $class();
56
    }
57
58
    /**
59
     * @param $name
60
     * @return string
61
     */
62 2
    public static function getAdapterClass($name)
63
    {
64 2
        return '\Nip\Database\Adapters\\'.$name;
65
    }
66
67
}