MethodReflection::getDeclaringClass()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
namespace Romm\ConfigurationObject\Legacy\Reflection;
3
4
/*
5
 * This file is part of the TYPO3 CMS project.
6
 *
7
 * It is free software; you can redistribute it and/or modify it under
8
 * the terms of the GNU General Public License, either version 2
9
 * of the License, or any later version.
10
 *
11
 * For the full copyright and license information, please read the
12
 * LICENSE.txt file that was distributed with this source code.
13
 *
14
 * The TYPO3 project - inspiring people to share!
15
 */
16
17
/**
18
 * Extended version of the ReflectionMethod
19
 */
20
class MethodReflection extends \ReflectionMethod
21
{
22
    /**
23
     * @var DocCommentParser An instance of the doc comment parser
24
     */
25
    protected $docCommentParser;
26
27
    /**
28
     * Returns the declaring class
29
     *
30
     * @return ClassReflection The declaring class
31
     */
32
    public function getDeclaringClass()
33
    {
34
        return new ClassReflection(parent::getDeclaringClass()->getName());
0 ignored issues
show
Bug introduced by
Consider using parent::getDeclaringClass()->name. There is an issue with getName() and APC-enabled PHP versions.
Loading history...
35
    }
36
37
    /**
38
     * Replacement for the original getParameters() method which makes sure
39
     * that \TYPO3\CMS\Extbase\Reflection\ParameterReflection objects are returned instead of the
40
     * original ReflectionParameter instances.
41
     *
42
     * @return ParameterReflection[] Parameter reflection objects of the parameters of this method
43
     */
44
    public function getParameters()
45
    {
46
        $extendedParameters = [];
47
        foreach (parent::getParameters() as $parameter) {
48
            $extendedParameters[] = new ParameterReflection([$this->getDeclaringClass()->getName(), $this->getName()], $parameter->getName());
0 ignored issues
show
introduced by
Consider using $this->class. There is an issue with getName() and APC-enabled PHP versions.
Loading history...
Bug introduced by
Consider using $this->name. There is an issue with getName() and APC-enabled PHP versions.
Loading history...
49
        }
50
        return $extendedParameters;
51
    }
52
53
    /**
54
     * Checks if the doc comment of this method is tagged with
55
     * the specified tag
56
     *
57
     * @param string $tag Tag name to check for
58
     * @return bool TRUE if such a tag has been defined, otherwise FALSE
59
     */
60
    public function isTaggedWith($tag)
61
    {
62
        $result = $this->getDocCommentParser()->isTaggedWith($tag);
63
        return $result;
64
    }
65
66
    /**
67
     * Returns an array of tags and their values
68
     *
69
     * @return array Tags and values
70
     */
71
    public function getTagsValues()
72
    {
73
        return $this->getDocCommentParser()->getTagsValues();
74
    }
75
76
    /**
77
     * Returns the values of the specified tag
78
     *
79
     * @param string $tag Tag name to check for
80
     * @return array Values of the given tag
81
     */
82
    public function getTagValues($tag)
83
    {
84
        return $this->getDocCommentParser()->getTagValues($tag);
85
    }
86
87
    /**
88
     * Returns the description part of the doc comment
89
     *
90
     * @return string Doc comment description
91
     */
92
    public function getDescription()
93
    {
94
        return $this->getDocCommentParser()->getDescription();
95
    }
96
97
    /**
98
     * Returns an instance of the doc comment parser and
99
     * runs the parse() method.
100
     *
101
     * @return DocCommentParser
102
     */
103
    protected function getDocCommentParser()
104
    {
105
        if (!is_object($this->docCommentParser)) {
106
            $this->docCommentParser = new DocCommentParser();
107
            $this->docCommentParser->parseDocComment($this->getDocComment());
108
        }
109
        return $this->docCommentParser;
110
    }
111
}
112