Completed
Branch master (7b4639)
by Johannes
13:16
created

LocateDefinedSymbolsFromExtensions   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 30
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1
Metric Value
wmc 3
lcom 0
cbo 1
dl 0
loc 30
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
    public function __invoke(array $extensionNames) : array
17
    {
18
        $definedSymbols = [];
19
        foreach($extensionNames as $extensionName) {
20
            try{
21
                $extensionReflection = new \ReflectionExtension($extensionName);
22
                $definedSymbols = array_merge(
23
                    $definedSymbols,
24
                    array_keys($extensionReflection->getConstants()),
25
                    array_keys($extensionReflection->getFunctions()),
26
                    $extensionReflection->getClassNames()
27
                );
28
            } catch (\Exception $e) {
29
                throw new UnknownExtensionException($e->getMessage());
30
            }
31
        }
32
        return $definedSymbols;
33
    }
34
35
36
37
}