ClassLoader   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 33
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 33
rs 10
c 0
b 0
f 0
wmc 8

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 2 1
A tryToGetClassFileOrGenerate() 0 4 1
A loadClass() 0 7 4
A getInstance() 0 6 2
1
<?php
2
3
namespace PHPKitchen\DI\Autoload;
4
5
include __DIR__ . '/ClassGenerator.php';
6
7
/**
8
 * Represents auto-loader that load virtual classes defined in IoC Container.
9
 *
10
 * @package PHPKitchen\DI\autoload
11
 * @author Dmitry Kolodko <[email protected]>
12
 */
13
class ClassLoader {
14
    private static $instance;
15
    /**
16
     * @var ClassGenerator
17
     */
18
    private $classGenerator;
19
20
    public function __construct($classGenerator) {
21
        $this->classGenerator = $classGenerator;
22
    }
23
24
    public static function getInstance() {
25
        if (null === self::$instance) {
26
            self::$instance = new static(new ClassGenerator());
27
        }
28
29
        return self::$instance;
30
    }
31
32
    public static function loadClass($className) {
33
        if (!\Yii::$container) {
34
            return;
35
        }
36
        $classFileName = self::getInstance()->tryToGetClassFileOrGenerate($className);
37
        if ($classFileName && file_exists($classFileName)) {
38
            include $classFileName;
39
        }
40
    }
41
42
    protected function tryToGetClassFileOrGenerate($class) {
43
        $generator = $this->classGenerator;
44
45
        return $generator->getClassFileNameIfExistOrGenerate($class);
46
    }
47
}