Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
90.91% covered (success)
90.91%
10 / 11
87.50% covered (warning)
87.50%
7 / 8
CRAP
0.00% covered (danger)
0.00%
0 / 1
DiscoveredSymbol
90.91% covered (success)
90.91%
10 / 11
87.50% covered (warning)
87.50%
7 / 8
8.05
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 getOriginalSymbol
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getSourceFiles
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 addSourceFile
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getReplacement
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setReplacement
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getNamespace
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getOriginalLocalName
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2/**
3 * A namespace, class, interface or trait discovered in the project.
4 */
5
6namespace BrianHenryIE\Strauss\Types;
7
8use BrianHenryIE\Strauss\Files\File;
9use BrianHenryIE\Strauss\Pipeline\FileSymbolScanner;
10
11abstract class DiscoveredSymbol
12{
13    /** @var array<File> $sourceFiles */
14    protected array $sourceFiles = [];
15
16    protected ?string $namespace;
17
18    protected string $fqdnOriginalSymbol;
19
20    protected string $replacement;
21
22    /**
23     * @param string $fqdnSymbol The classname / namespace etc.
24     * @param File $sourceFile The file it was discovered in.
25     */
26    public function __construct(string $fqdnSymbol, File $sourceFile, string $namespace = '\\')
27    {
28        $this->fqdnOriginalSymbol = $fqdnSymbol;
29
30        $this->addSourceFile($sourceFile);
31        $sourceFile->addDiscoveredSymbol($this);
32
33        $this->namespace = $namespace;
34    }
35
36    public function getOriginalSymbol(): string
37    {
38        return $this->fqdnOriginalSymbol;
39    }
40
41    /**
42     * @return File[]
43     */
44    public function getSourceFiles(): array
45    {
46        return $this->sourceFiles;
47    }
48
49    /**
50     * @param File $sourceFile
51     *
52     * @see FileSymbolScanner
53     */
54    public function addSourceFile(File $sourceFile): void
55    {
56        $this->sourceFiles[$sourceFile->getSourcePath()] = $sourceFile;
57    }
58
59    public function getReplacement(): string
60    {
61        return $this->replacement ?? $this->fqdnOriginalSymbol;
62    }
63
64    public function setReplacement(string $replacement): void
65    {
66        $this->replacement = $replacement;
67    }
68
69    public function getNamespace(): ?string
70    {
71        return $this->namespace;
72    }
73
74    public function getOriginalLocalName(): string
75    {
76        return array_reverse(explode('\\', $this->fqdnOriginalSymbol))[0];
77    }
78}