StrategyFactory::create()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 14
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 3

Importance

Changes 0
Metric Value
eloc 10
dl 0
loc 14
rs 9.9332
c 0
b 0
f 0
ccs 5
cts 5
cp 1
cc 3
nc 3
nop 1
crap 3
1
<?php
2
3
namespace linkprofit\Chance\Strategies;
4
5
use InvalidArgumentException;
6
use linkprofit\Chance\ValueObjects\Percent;
7
use linkprofit\Chance\ValueObjects\Ratio;
8
9
/**
10
 * Фабрика инициализирующая стратегию для расчёта вероятности
11
 */
12
class StrategyFactory
13 6
{
14
    public function create($valueObject): CalculationStrategyInterface
15
    {
16 6
        switch (true) {
17 5
            case $valueObject instanceof Ratio:
18 5
                $result = new RatioStrategy($valueObject);
19
                break;
20 1
            case $valueObject instanceof Percent:
21
                $result = new PercentStrategy($valueObject);
22
                break;
23 5
            default:
24
                throw new InvalidArgumentException('Unknown value object type');
25
        }
26
27
        return $result;
28
    }
29
}
30