CompositeStorage   A
last analyzed

Complexity

Total Complexity 9

Size/Duplication

Total Lines 52
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 9
lcom 1
cbo 3
dl 0
loc 52
ccs 0
cts 29
cp 0
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A init() 0 8 2
A getPage() 0 10 3
A getList() 0 10 3
A setStorages() 0 4 1
1
<?php
2
/**
3
 * Yii2 Pages Module
4
 *
5
 * @link      https://github.com/hiqdev/yii2-module-pages
6
 * @package   yii2-module-pages
7
 * @license   BSD-3-Clause
8
 * @copyright Copyright (c) 2016-2017, HiQDev (http://hiqdev.com/)
9
 */
10
11
namespace hiqdev\yii2\modules\pages\storage;
12
13
use Yii;
14
use hiqdev\yii2\modules\pages\interfaces\PageInterface;
15
use hiqdev\yii2\modules\pages\interfaces\StorageInterface;
16
use hiqdev\yii2\modules\pages\models\AbstractPage;
17
use hiqdev\yii2\modules\pages\models\PagesList;
18
use yii\base\BaseObject;
19
20
class CompositeStorage extends BaseObject implements StorageInterface
21
{
22
    /** @var StorageInterface[] */
23
    private $storages;
24
25
    public function init()
26
    {
27
        parent::init();
28
29
        foreach ($this->storages as $name => $config) {
30
            $this->storages[$name] = Yii::createObject($config);
31
        }
32
    }
33
34
    /**
35
     * @param string $pageName
36
     * @return AbstractPage|null
37
     */
38
    public function getPage(string $pageName): ?PageInterface
39
    {
40
        foreach ($this->storages as $storage) {
41
            if (!is_null($page = $storage->getPage($pageName))) {
42
                return $page;
43
            }
44
        }
45
46
        return null;
47
    }
48
49
    /**
50
     * @param null|string $listName
51
     * @return PagesList|null
52
     */
53
    public function getList(string $listName = null): ?PagesList
54
    {
55
        foreach ($this->storages as $storage) {
56
            if (!is_null($list = $storage->getList($listName))) {
57
                return $list;
58
            }
59
        }
60
61
        return null;
62
    }
63
64
    /**
65
     * @param StorageInterface[] $storages
66
     */
67
    public function setStorages(array $storages): void
68
    {
69
        $this->storages = $storages;
70
    }
71
}
72