Completed
Pull Request — master (#1)
by
unknown
04:06
created

ComboStorage::getPage()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 10

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 12

Importance

Changes 0
Metric Value
dl 0
loc 10
ccs 0
cts 9
cp 0
rs 9.9332
c 0
b 0
f 0
cc 3
nc 3
nop 1
crap 12
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 hiqdev\yii2\modules\pages\models\AbstractPage;
14
use Yii;
15
use yii\base\BaseObject;
16
17
class ComboStorage extends BaseObject implements StorageInterface
18
{
19
    /** @var StorageInterface[] */
20
    private $storages;
21
22
    public function init()
23
    {
24
        parent::init();
25
26
        foreach ($this->storages as $name => $config) {
27
            $this->storages[$name] = Yii::createObject($config);
28
        }
29
    }
30
31
    /**
32
     * @param string $pageName
33
     * @return AbstractPage|null
34
     */
35
    public function getPage(string $pageName): ?AbstractPage
36
    {
37
        foreach ($this->storages as $storage) {
38
            if (!is_null($page = $storage->getPage($pageName))) {
39
                return $page;
40
            }
41
        }
42
43
        return null;
44
    }
45
46
    /**
47
     * @param StorageInterface[] $storages
48
     */
49
    public function setStorages(array $storages): void
50
    {
51
        $this->storages = $storages;
52
    }
53
}
54