FirstSuccessfulHostDetector   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 11
c 1
b 0
f 0
dl 0
loc 37
ccs 15
cts 15
cp 1
rs 10
wmc 7

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A addDetector() 0 3 1
A addDetectors() 0 4 2
A getCurrentHost() 0 10 3
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Lamoda\MultiEnv\HostDetector;
6
7
use Lamoda\MultiEnv\Model\HostId;
8
9
final class FirstSuccessfulHostDetector implements HostDetectorInterface
10
{
11
    /**
12
     * @var array|HostDetectorInterface[] $detectors
13
     */
14
    private $detectors = [];
15
16 13
    public function __construct(array $detectors = [])
17
    {
18 13
        $this->addDetectors($detectors);
19 13
    }
20
21 22
    public function getCurrentHost(): HostId
22
    {
23 22
        foreach ($this->detectors as $detector) {
24 20
            $hostId = $detector->getCurrentHost();
25 20
            if ((string)$hostId !== '') {
26 20
                return $hostId;
27
            }
28
        }
29
30 3
        return new HostId('');
31
    }
32
33
    /**
34
     * @param array|HostDetectorInterface[] $detectors
35
     */
36 13
    private function addDetectors(array $detectors): void
37
    {
38 13
        foreach ($detectors as $detector) {
39 12
            $this->addDetector($detector);
40
        }
41 13
    }
42
43 12
    private function addDetector(HostDetectorInterface $detector): void
44
    {
45 12
        $this->detectors[] = $detector;
46 12
    }
47
}
48