Completed
Push — master ( 53cbf4...c4dd08 )
by Matthias
04:10
created

LocateDefinedSymbolsFromExtensions   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 30
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Test Coverage

Coverage 91.67%

Importance

Changes 0
Metric Value
wmc 3
c 0
b 0
f 0
lcom 0
cbo 1
dl 0
loc 30
ccs 11
cts 12
cp 0.9167
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
A __invoke() 0 18 3
1
<?php
2
3
namespace ComposerRequireChecker\DefinedSymbolsLocator;
4
5
6
use ComposerRequireChecker\Exception\UnknownExtensionException;
7
8
class LocateDefinedSymbolsFromExtensions
9
{
10
11
    /**
12
     * @param string[] $extensionNames
13
     * @return string[]
14
     * @throws UnknownExtensionException if the extension cannot be found
15
     */
16 8
    public function __invoke(array $extensionNames) : array
17
    {
18 8
        $definedSymbols = [];
19 8
        foreach($extensionNames as $extensionName) {
20
            try{
21 8
                $extensionReflection = new \ReflectionExtension($extensionName);
22 7
                $definedSymbols = array_merge(
23
                    $definedSymbols,
24 7
                    array_keys($extensionReflection->getConstants()),
25 7
                    array_keys($extensionReflection->getFunctions()),
26 7
                    $extensionReflection->getClassNames()
27
                );
28 1
            } catch (\Exception $e) {
29 1
                throw new UnknownExtensionException($e->getMessage());
30
            }
31
        }
32 7
        return $definedSymbols;
33
    }
34
35
36
37
}