IdentifierField   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 47
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 5
c 1
b 0
f 0
lcom 1
cbo 4
dl 0
loc 47
rs 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
A getOptionType() 0 3 1
A handles() 0 3 1
A __construct() 0 4 1
A getOptions() 0 3 1
A getType() 0 3 1
1
<?php
2
namespace rtens\domin\delivery\web\fields;
3
4
use rtens\domin\delivery\FieldRegistry;
5
use rtens\domin\Parameter;
6
use rtens\domin\parameters\IdentifiersProvider;
7
use rtens\domin\reflection\types\IdentifierType;
8
9
class IdentifierField extends EnumerationField {
10
11
    /** @var IdentifiersProvider */
12
    private $identifiers;
13
14
    /**
15
     * @param FieldRegistry $fields
16
     * @param IdentifiersProvider $identifiers
17
     */
18
    public function __construct(FieldRegistry $fields, IdentifiersProvider $identifiers) {
19
        parent::__construct($fields);
20
        $this->identifiers = $identifiers;
21
    }
22
23
    /**
24
     * @param Parameter $parameter
25
     * @return bool
26
     */
27
    public function handles(Parameter $parameter) {
28
        return $parameter->getType() instanceof IdentifierType;
29
    }
30
31
    /**
32
     * @param Parameter $parameter
33
     * @return mixed
34
     * @throws \Exception
35
     */
36
    protected function getOptions(Parameter $parameter) {
37
        return $this->identifiers->getIdentifiers($this->getType($parameter)->getTarget());
38
    }
39
40
    /**
41
     * @param Parameter $parameter
42
     * @return IdentifierType
43
     */
44
    private function getType(Parameter $parameter) {
0 ignored issues
show
Bug introduced by
Consider using a different method name as you override a private method of the parent class.

Overwriting private methods is generally fine as long as you also use private visibility. It might still be preferable for understandability to use a different method name.

Loading history...
45
        return $parameter->getType();
46
    }
47
48
    /**
49
     * @param Parameter $parameter
50
     * @return \watoki\reflect\Type
51
     */
52
    protected function getOptionType(Parameter $parameter) {
53
        return $this->getType($parameter)->getPrimitive();
54
    }
55
}