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

HasAdapterTrait::setAdapter()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 4
ccs 3
cts 3
cp 1
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 1
crap 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
}