StringReflectorFactory   A
last analyzed

Complexity

Total Complexity 1

Size/Duplication

Total Lines 15
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 8
c 2
b 0
f 0
dl 0
loc 15
rs 10
wmc 1

1 Method

Rating   Name   Duplication   Size   Complexity  
A __invoke() 0 10 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace RoaveTest\BackwardCompatibility;
6
7
use Roave\BetterReflection\BetterReflection;
8
use Roave\BetterReflection\Reflector\ClassReflector;
9
use Roave\BetterReflection\SourceLocator\Exception\EmptyPhpSourceCode;
10
use Roave\BetterReflection\SourceLocator\SourceStubber\ReflectionSourceStubber;
11
use Roave\BetterReflection\SourceLocator\Type\AggregateSourceLocator;
12
use Roave\BetterReflection\SourceLocator\Type\EvaledCodeSourceLocator;
13
use Roave\BetterReflection\SourceLocator\Type\PhpInternalSourceLocator;
14
use Roave\BetterReflection\SourceLocator\Type\StringSourceLocator;
15
16
final class StringReflectorFactory
17
{
18
    /**
19
     * @throws EmptyPhpSourceCode
20
     */
21
    public function __invoke(string $sourceCode) : ClassReflector
22
    {
23
        $astLocator = (new BetterReflection())->astLocator();
24
        $stubber    = new ReflectionSourceStubber();
25
26
        return new ClassReflector(
27
            new AggregateSourceLocator([
28
                new PhpInternalSourceLocator($astLocator, $stubber),
29
                new EvaledCodeSourceLocator($astLocator, $stubber),
30
                new StringSourceLocator($sourceCode, $astLocator),
31
            ])
32
        );
33
    }
34
}
35