Completed
Pull Request — master (#5)
by Steve
02:26
created

StepBuilder::build()   B

Complexity

Conditions 10
Paths 4

Size

Total Lines 19

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 19
rs 7.6666
c 0
b 0
f 0
cc 10
nc 4
nop 1

How to fix   Complexity   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
namespace MeadSteve\Tale;
4
5
use MeadSteve\Tale\Steps\LambdaStep;
6
use MeadSteve\Tale\Steps\Step;
7
8
class StepBuilder
9
{
10
11
    /**
12
     * @param mixed[] ...$args
13
     * @return Step
14
     */
15
    public static function build(...$args): Step
16
    {
17
        if (sizeof($args) == 1 && $args[0] instanceof Step) {
18
            return $args[0];
19
        }
20
        if (sizeof($args) == 3
21
            && is_string($args[2])
22
            && $args[0] instanceof \Closure
23
            && $args[1] instanceof \Closure
24
        ) {
25
            return new LambdaStep($args[0], $args[1], $args[2]);
26
        }
27
        if (sizeof($args) == 2
28
            && $args[0] instanceof \Closure
29
            && $args[1] instanceof \Closure
30
        ) {
31
            return new LambdaStep($args[0], $args[1]);
32
        }
33
        throw new \RuntimeException("Not sure how to build a step from provided data");
34
    }
35
}
36