ClassToFileConverter   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 33
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 5

Importance

Changes 0
Metric Value
wmc 5
lcom 0
cbo 5
dl 0
loc 33
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A fromComposerAutoloader() 0 7 1
A fromComposerAutoloaders() 0 15 3
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