ClassToFileConverter::fromComposerAutoloader()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 7
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 1
1
<?php
2
3
namespace Phpactor\ClassFileConverter;
4
5
use Phpactor\ClassFileConverter\Adapter\Composer\ComposerFileToClass;
6
use Phpactor\ClassFileConverter\Adapter\Composer\ComposerClassToFile;
7
use Phpactor\ClassFileConverter\Domain\ClassToFileFileToClass;
8
use Composer\Autoload\ClassLoader;
9
use Phpactor\ClassFileConverter\Domain\ChainClassToFile;
10
use Phpactor\ClassFileConverter\Domain\ChainFileToClass;
11
12
/**
13
 * Facade for the library.
14
 */
15
final class ClassToFileConverter
16
{
17
    private $converter;
18
19
    private function __construct(ClassToFileFileToClass $converter)
20
    {
21
        $this->converter = $converter;
22
    }
23
24
    public static function fromComposerAutoloader(ClassLoader $classLoader): ClassToFileFileToClass
25
    {
26
        return  new ClassToFileFileToClass(
27
            new ComposerClassToFile($classLoader),
28
            new ComposerFileToClass($classLoader)
29
        );
30
    }
31
32
    public static function fromComposerAutoloaders(array $classLoaders): ClassToFileFileToClass
33
    {
34
        $classToFiles = $fileToClasses = [];
35
        foreach ($classLoaders as $classLoader) {
36
            $classToFiles[] = new ComposerClassToFile($classLoader);
37
        }
38
        foreach ($classLoaders as $classLoader) {
39
            $fileToClasses[] = new ComposerFileToClass($classLoader);
40
        }
41
42
        return new ClassToFileFileToClass(
43
            new ChainClassToFile($classToFiles),
44
            new ChainFileToClass($fileToClasses)
45
        );
46
    }
47
}
48