Passed
Push — master ( 29f8e6...e59da1 )
by Björn
02:58
created

DocPosProviderTrait::tearDown()   A

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
3
declare(strict_types=1);
4
5
namespace BestIt\Sniffs;
6
7
use BestIt\CodeSniffer\File;
8
use BestIt\CodeSniffer\Helper\DocHelper;
9
10
/**
11
 * Trait DocPosProviderTrait.
12
 *
13
 * @author blange <[email protected]>
14
 * @package  BestIt\Sniffs
15
 */
16
trait DocPosProviderTrait
17
{
18
    /**
19
     * The position of the doc comment or null.
20
     *
21
     * @var int|null
22
     */
23
    private $docCommentPos = -1;
24
25
    /**
26
     * The used doc Helper.
27
     *
28
     * @var DocHelper
29
     */
30
    private $docHelper = null;
31
32
    /**
33
     * Returns the position of the doc block if there is one.
34
     *
35
     * @return int|null
36
     */
37
    protected function getDocCommentPos(): ?int
38
    {
39
        if ($this->docCommentPos === -1) {
40
            $this->docCommentPos = $this->loadDocCommentPos();
41
        }
42
43
        return $this->docCommentPos;
44
    }
45
46
    /**
47
     * Returns the helper for the doc block.
48
     *
49
     * @return DocHelper
50
     */
51
    protected function getDocHelper(): DocHelper
52
    {
53
        if ($this->docHelper === null) {
54
            $this->docHelper = new DocHelper($this->getFile()->getBaseFile(), $this->getStackPos());
55
        }
56
57
        return $this->docHelper;
58
    }
59
60
    /**
61
     * Type-safe getter for the file.
62
     *
63
     * @return File
64
     */
65
    abstract protected function getFile(): File;
66
67
    /**
68
     * Type-safe getter for the stack position.
69
     *
70
     * @return int
71
     */
72
    abstract protected function getStackPos(): int;
73
74
    /**
75
     * Loads the position of the doc comment.
76
     *
77
     * @return int|null
78
     */
79
    protected function loadDocCommentPos(): ?int
80
    {
81
        $docHelper = $this->getDocHelper();
82
83
        return $docHelper->hasDocBlock() ? $docHelper->getBlockStartPosition() : null;
84
    }
85
86
    /**
87
     * Removes the cached data for the doc comment position.
88
     *
89
     * @return void
90
     */
91
    protected function resetDocCommentPos(): void
92
    {
93
        $this->docCommentPos = -1;
94
        $this->docHelper = null;
95
    }
96
97
    /**
98
     * Removes the cached data.
99
     *
100
     * @return void
101
     */
102
    protected function tearDown(): void
103
    {
104
        $this->resetDocCommentPos();
105
    }
106
}
107