Failed Conditions
Pull Request — master (#103)
by Matthias
07:04
created

GuessFromLoadedExtensions::__construct()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 2

Importance

Changes 0
Metric Value
eloc 3
dl 0
loc 5
ccs 4
cts 4
cp 1
rs 10
c 0
b 0
f 0
cc 2
nc 2
nop 1
crap 2
1
<?php
2
3
namespace ComposerRequireChecker\DependencyGuesser;
4
5
use ComposerRequireChecker\Cli\Options;
6
use ComposerRequireChecker\DefinedSymbolsLocator\LocateDefinedSymbolsFromExtensions;
7
8
class GuessFromLoadedExtensions implements GuesserInterface
9
{
10
    private $loadedExtensions;
11
12
    /**
13
     * @var array|null
14
     */
15
    private $coreExtensions;
16
17 3
    public function __construct(?Options $options)
18
    {
19 3
        $this->loadedExtensions = get_loaded_extensions();
20 3
        if($options instanceof Options) {
0 ignored issues
show
Coding Style introduced by
Expected 1 space after IF keyword; 0 found
Loading history...
21 1
            $this->coreExtensions = $options->getPhpCoreExtensions();
22
        }
23 3
    }
24
25 3
    public function __invoke(string $symbolName): \Generator
26
    {
27 3
        $definedSymbolsFromExtensions = new LocateDefinedSymbolsFromExtensions();
28 3
        foreach ($this->loadedExtensions as $extensionName) {
29 3
            $extensionSymbols = $definedSymbolsFromExtensions([$extensionName]);
30 3
            if (in_array($symbolName, $extensionSymbols)) {
31 2
                if ($this->coreExtensions && in_array($extensionName, $this->coreExtensions)) {
32 1
                    yield "php";
33
                    continue;
34
                }
35
36 3
                yield 'ext-' . $extensionName;
37
            }
38
        }
39 1
    }
40
}
41