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

GuessFromLoadedExtensions   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 29
Duplicated Lines 0 %

Test Coverage

Coverage 92.86%

Importance

Changes 0
Metric Value
wmc 7
eloc 14
dl 0
loc 29
ccs 13
cts 14
cp 0.9286
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 2
A __invoke() 0 12 5
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