GuessFromLoadedExtensions::__construct()   A
last analyzed

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 1
Bugs 0 Features 0
Metric Value
eloc 3
c 1
b 0
f 0
dl 0
loc 5
ccs 4
cts 4
cp 1
rs 10
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 string[]|null
14
     */
15
    private $coreExtensions;
16
17 5
    public function __construct(?Options $options = null)
18
    {
19 5
        $this->loadedExtensions = get_loaded_extensions();
20 5
        if ($options instanceof Options) {
21 3
            $this->coreExtensions = $options->getPhpCoreExtensions();
22
        }
23 5
    }
24
25 5
    public function __invoke(string $symbolName): \Generator
26
    {
27 5
        $definedSymbolsFromExtensions = new LocateDefinedSymbolsFromExtensions();
28 5
        foreach ($this->loadedExtensions as $extensionName) {
29 5
            $extensionSymbols = $definedSymbolsFromExtensions([$extensionName]);
30 5
            if (in_array($symbolName, $extensionSymbols)) {
31 3
                if ($this->coreExtensions && in_array($extensionName, $this->coreExtensions)) {
32 1
                    yield 'php';
33
                }
34
35 2
                yield 'ext-' . $extensionName;
36
            }
37
        }
38 3
    }
39
}
40