IdentifierField::getType()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 7
c 0
b 0
f 0
rs 9.4285
cc 2
eloc 5
nc 2
nop 1
1
<?php
2
namespace rtens\domin\delivery\cli\fields;
3
4
use rtens\domin\delivery\cli\CliField;
5
use rtens\domin\delivery\FieldRegistry;
6
use rtens\domin\Parameter;
7
use rtens\domin\reflection\types\IdentifierType;
8
9
class IdentifierField implements CliField {
10
11
    /** @var FieldRegistry */
12
    private $fields;
13
14
    /**
15
     * @param FieldRegistry $fields
16
     */
17
    public function __construct(FieldRegistry $fields) {
18
        $this->fields = $fields;
19
    }
20
21
    /**
22
     * @param Parameter $parameter
23
     * @return bool
24
     */
25
    public function handles(Parameter $parameter) {
26
        return $parameter->getType() instanceof IdentifierType;
27
    }
28
29
    /**
30
     * @param Parameter $parameter
31
     * @param string $serialized
32
     * @return mixed
33
     */
34
    public function inflate(Parameter $parameter, $serialized) {
35
        $primitiveParameter = new Parameter($parameter->getName(), $this->getType($parameter)->getPrimitive());
36
        return $this->fields->getField($primitiveParameter)->inflate($primitiveParameter, $serialized);
37
    }
38
39
    /**
40
     * @param Parameter $parameter
41
     * @return IdentifierType
42
     */
43
    private function getType(Parameter $parameter) {
44
        $type = $parameter->getType();
45
        if (!($type instanceof IdentifierType)) {
46
            throw new \InvalidArgumentException("[$type] must be an IdentifierType");
47
        }
48
        return $type;
49
    }
50
51
    /**
52
     * @param Parameter $parameter
53
     * @return string
54
     */
55
    public function getDescription(Parameter $parameter) {
56
    }
57
}