Passed
Pull Request — master (#5)
by
unknown
01:34
created

DbalConfig   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 16
c 1
b 0
f 0
dl 0
loc 38
ccs 0
cts 23
cp 0
rs 10
wmc 7

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A prepareConfig() 0 3 1
A getAlias() 0 3 1
A setConnections() 0 9 4
1
<?php
2
3
namespace Yiisoft\Yii\Cycle;
4
5
use Spiral\Database\Config\DatabaseConfig;
6
use Yiisoft\Aliases\Aliases;
7
use Yiisoft\Yii\Cycle\Config\BaseConfig;
8
use Yiisoft\Yii\Cycle\Config\Params;
9
10
/**
11
 * @property-read string $default
12
 * @property-read array  $aliases
13
 * @property-read array  $databases
14
 * @property-read array  $connections
15
 */
16
class DbalConfig extends BaseConfig
17
{
18
    protected $default     = '';
19
    protected $aliases     = [];
20
    protected $databases   = [];
21
    protected $connections = [];
22
23
    // private property will be ignored in toArray() method
24
    /** @var Aliases */
25
    private $objAliases;
26
27
    public function __construct(Params $params, Aliases $aliases)
28
    {
29
        $this->objAliases = $aliases;
30
        parent::__construct($params);
31
    }
32
33
    public function prepareConfig(): DatabaseConfig
34
    {
35
        return new DatabaseConfig($this->toArray());
36
    }
37
38
    protected function setConnections($data): void
39
    {
40
        $this->connections = $data;
0 ignored issues
show
Bug introduced by
The property connections is declared read-only in Yiisoft\Yii\Cycle\DbalConfig.
Loading history...
41
        foreach ($this->connections as &$connection) {
42
            // if connection option contain alias in path
43
            if (isset($connection['connection']) && preg_match('/^(?<proto>\w+:)?@/', $connection['connection'], $m)) {
44
                $proto = $m['proto'];
45
                $path = $this->getAlias(substr($connection['connection'], strlen($proto)));
46
                $connection['connection'] = $proto . $path;
47
            }
48
        }
49
    }
50
51
    protected function getAlias(string $alias): string
52
    {
53
        return $this->objAliases->get($alias, true);
0 ignored issues
show
Bug Best Practice introduced by
The expression return $this->objAliases->get($alias, true) could return the type boolean which is incompatible with the type-hinted return string. Consider adding an additional type-check to rule them out.
Loading history...
54
    }
55
}
56