Passed
Push — 1.6 ( c2a002 )
by Luis
05:37
created

MembersBuilder::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 3
nc 1
nop 3
dl 0
loc 8
ccs 4
cts 4
cp 1
crap 1
rs 9.4285
c 0
b 0
f 0
1
<?php
2
/**
3
 * PHP version 7.1
4
 *
5
 * This source file is subject to the license that is bundled with this package in the file LICENSE.
6
 */
7
8
namespace PhUml\Parser\Code\Builders;
9
10
use PhUml\Parser\Code\Builders\Members\AttributesBuilder;
11
use PhUml\Parser\Code\Builders\Members\ConstantsBuilder;
12
use PhUml\Parser\Code\Builders\Members\MethodsBuilder;
13
14
/**
15
 * It builds the constants, attributes and methods of a definition
16
 *
17
 * @see ConstantsBuilder for more details about the constants creation
18
 * @see AttributesBuilder for more details about the attributes creation
19
 * @see MethodsBuilder for more details about the methods creation
20
 */
21
class MembersBuilder
22
{
23
    /** @var ConstantsBuilder */
24
    private $constantsBuilder;
25
26
    /** @var AttributesBuilder */
27
    private $attributesBuilder;
28
29
    /** @var MethodsBuilder */
30
    private $methodsBuilder;
31
32 147
    public function __construct(
33
        ConstantsBuilder $constantsBuilder = null,
34
        AttributesBuilder $attributesBuilder = null,
35
        MethodsBuilder $methodsBuilder = null
36
    ) {
37 147
        $this->constantsBuilder = $constantsBuilder ?? new ConstantsBuilder();
38 147
        $this->attributesBuilder = $attributesBuilder ?? new AttributesBuilder([]);
39 147
        $this->methodsBuilder = $methodsBuilder ?? new MethodsBuilder([]);
40 147
    }
41
42
    /**
43
     * @param \PhpParser\Node[] $members
44
     * @return \PhUml\Code\Attributes\Constant[]
45
     */
46 114
    public function constants(array $members): array
47
    {
48 114
        return $this->constantsBuilder->build($members);
49
    }
50
51
    /**
52
     * @param \PhpParser\Node[] $members
53
     * @return \PhUml\Code\Attributes\Attribute[]
54
     */
55 120
    public function attributes(array $members): array
56
    {
57 120
        return $this->attributesBuilder->build($members);
58
    }
59
60
    /**
61
     * @param ClassMethod[] $classMethods
62
     * @return Method[]
63
     */
64 126
    public function methods(array $methods): array
65
    {
66 126
        return $this->methodsBuilder->build($methods);
67
    }
68
}
69