Completed
Push — master ( 5ecb26...a15224 )
by Alexander
10s
created

ReflectionType::convertToDisplayType()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 13
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 13
ccs 6
cts 6
cp 1
c 0
b 0
f 0
rs 9.4285
cc 2
eloc 8
nc 2
nop 1
crap 2
1
<?php
2
/**
3
 * Parser Reflection API
4
 *
5
 * @copyright Copyright 2015, Lisachenko Alexander <[email protected]>
6
 *
7
 * This source file is subject to the license that is bundled
8
 * with this source code in the file LICENSE.
9
 */
10
11
namespace Go\ParserReflection;
12
13
use ReflectionType as BaseReflectionType;
14
15
/**
16
 * ReflectionType implementation
17
 */
18
class ReflectionType extends BaseReflectionType
19
{
20
    /**
21
     * If type allows null or not
22
     *
23
     * @var boolean
24
     */
25
    private $allowsNull;
26
27
    /**
28
     * Is type built-in or not
29
     *
30
     * @var
31
     */
32
    private $isBuiltin;
33
34
    /**
35
     * @var string Type name
36
     */
37
    private $type;
38
39
    /**
40
     * Initializes reflection data
41
     */
42 17
    public function __construct($type, $allowsNull, $isBuiltin)
43
    {
44 17
        $this->type       = $type;
45 17
        $this->allowsNull = $allowsNull;
46 17
        $this->isBuiltin  = $isBuiltin;
47 17
    }
48
49
    /**
50
     * @inheritDoc
51
     */
52 2
    public function allowsNull()
53
    {
54 2
        return $this->allowsNull;
55
    }
56
57
    /**
58
     * @inheritDoc
59
     */
60 2
    public function isBuiltin()
61
    {
62 2
        return $this->isBuiltin;
63
    }
64
65
    /**
66
     * @inheritDoc
67
     */
68 2
    public function __toString()
69
    {
70 2
        return $this->type;
71
    }
72
73
    /**
74
     * PHP reflection has it's own rules, so 'int' type will be displayed as 'integer', etc...
75
     *
76
     * @see https://3v4l.org/nZFiT
77
     *
78
     * @param ReflectionType $type Type to display
79
     *
80
     * @return string
81
     */
82 15
    public static function convertToDisplayType(\ReflectionType $type)
83
    {
84 15
        static $typeMap = [
85
            'int'  => 'integer',
86
            'bool' => 'boolean'
87
        ];
88 15
        $displayType = $type->type;
0 ignored issues
show
Bug introduced by Alexander Lisachenko
The property type does not seem to exist in ReflectionType.

An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name.

If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading.

Loading history...
89 15
        if (isset($typeMap[$displayType])) {
90 6
            $displayType = $typeMap[$displayType];
91
        }
92
93 15
        return ltrim($displayType, '\\');
94
    }
95
}
96