Passed
Pull Request — master (#15)
by Korotkov
07:08
created

Director   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 20
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 2
eloc 11
c 1
b 0
f 0
dl 0
loc 20
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A build() 0 11 1
A setBuilder() 0 3 1
1
<?php
2
3
declare(strict_types=1);
4
5
/**
6
 * @author  : Jagepard <[email protected]>
7
 * @license https://mit-license.org/ MIT
8
 */
9
10
namespace Creational\Builder;
11
12
use Creational\Builder\Interfaces\{DirectorInterface, BuilderInterface, ComputerInterface};
13
14
class Director implements DirectorInterface
15
{
16
    private BuilderInterface $builder;
17
18
    public function build(): ComputerInterface
19
    {
20
        $this->builder
21
            ->setPart(new Hardware\Motherboard(Order::MB))
22
            ->setPart(new Hardware\Cpu(Order::CPU))
23
            ->setPart(new Hardware\Ram(Order::RAM))
24
            ->setPart(new Hardware\Gpu(Order::GPU))
25
            ->setPart(new Hardware\Ssd(Order::SSD))
26
            ->setPart(new Hardware\Hdd(Order::HDD));
27
28
        return $this->builder->getComputer();
29
    }
30
31
    public function setBuilder(BuilderInterface $builder): void
32
    {
33
        $this->builder = $builder;
34
    }
35
}
36