Completed
Push — master ( 3be072...ba2d3a )
by Marco
231:32 queued 209:55
created

Configuration   A

Complexity

Total Complexity 23

Size/Duplication

Total Lines 116
Duplicated Lines 0 %

Coupling/Cohesion

Components 3
Dependencies 7

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 23
lcom 3
cbo 7
dl 0
loc 116
ccs 47
cts 47
cp 1
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace ProxyManager;
6
7
use ProxyManager\Autoloader\Autoloader;
8
use ProxyManager\Autoloader\AutoloaderInterface;
9
use ProxyManager\FileLocator\FileLocator;
10
use ProxyManager\GeneratorStrategy\EvaluatingGeneratorStrategy;
11
use ProxyManager\GeneratorStrategy\GeneratorStrategyInterface;
12
use ProxyManager\Inflector\ClassNameInflector;
13
use ProxyManager\Inflector\ClassNameInflectorInterface;
14
use ProxyManager\Signature\ClassSignatureGenerator;
15
use ProxyManager\Signature\ClassSignatureGeneratorInterface;
16
use ProxyManager\Signature\SignatureChecker;
17
use ProxyManager\Signature\SignatureCheckerInterface;
18
use ProxyManager\Signature\SignatureGenerator;
19
use ProxyManager\Signature\SignatureGeneratorInterface;
20
use function sys_get_temp_dir;
21
22
/**
23
 * Base configuration class for the proxy manager - serves as micro disposable DIC/facade
24
 */
25
class Configuration
26
{
27
    public const DEFAULT_PROXY_NAMESPACE = 'ProxyManagerGeneratedProxy';
28
29
    protected ?string $proxiesTargetDir;
0 ignored issues
show
Bug introduced by
This code did not parse for me. Apparently, there is an error somewhere around this line:

Syntax error, unexpected '?', expecting T_FUNCTION or T_CONST
Loading history...
30
    protected string $proxiesNamespace = self::DEFAULT_PROXY_NAMESPACE;
31
    protected ?GeneratorStrategyInterface $generatorStrategy;
32
    protected ?AutoloaderInterface $proxyAutoloader;
33
    protected ?ClassNameInflectorInterface $classNameInflector;
34
    protected ?SignatureGeneratorInterface $signatureGenerator;
35
    protected ?SignatureCheckerInterface $signatureChecker;
36
    protected ?ClassSignatureGeneratorInterface $classSignatureGenerator;
37
38
    public function setProxyAutoloader(AutoloaderInterface $proxyAutoloader) : void
39
    {
40
        $this->proxyAutoloader = $proxyAutoloader;
41
    }
42
43
    public function getProxyAutoloader() : AutoloaderInterface
44
    {
45
        return $this->proxyAutoloader
46
            ?? $this->proxyAutoloader = new Autoloader(
47
                new FileLocator($this->getProxiesTargetDir()),
48
                $this->getClassNameInflector()
49
            );
50
    }
51
52
    public function setProxiesNamespace(string $proxiesNamespace) : void
53
    {
54 1
        $this->proxiesNamespace = $proxiesNamespace;
55
    }
56 1
57 1
    public function getProxiesNamespace() : string
58
    {
59 1
        return $this->proxiesNamespace;
60
    }
61 1
62 1
    public function setProxiesTargetDir(string $proxiesTargetDir) : void
63 1
    {
64 1
        $this->proxiesTargetDir = $proxiesTargetDir;
65
    }
66
67
    public function getProxiesTargetDir() : string
68 1
    {
69
        return $this->proxiesTargetDir
70 1
            ?? $this->proxiesTargetDir = sys_get_temp_dir();
71 1
    }
72
73 1
    public function setGeneratorStrategy(GeneratorStrategyInterface $generatorStrategy) : void
74
    {
75 1
        $this->generatorStrategy = $generatorStrategy;
76
    }
77
78 1
    public function getGeneratorStrategy() : GeneratorStrategyInterface
79
    {
80 1
        return $this->generatorStrategy
81 1
            ?? $this->generatorStrategy = new EvaluatingGeneratorStrategy();
82
    }
83 1
84
    public function setClassNameInflector(ClassNameInflectorInterface $classNameInflector) : void
85 1
    {
86
        $this->classNameInflector = $classNameInflector;
87
    }
88 1
89
    public function getClassNameInflector() : ClassNameInflectorInterface
90 1
    {
91 1
        return $this->classNameInflector
92
            ?? $this->classNameInflector = new ClassNameInflector($this->getProxiesNamespace());
93 2
    }
94
95 2
    public function setSignatureGenerator(SignatureGeneratorInterface $signatureGenerator) : void
96 2
    {
97
        $this->signatureGenerator = $signatureGenerator;
98
    }
99 1
100
    public function getSignatureGenerator() : SignatureGeneratorInterface
101 1
    {
102 1
        return $this->signatureGenerator
103
            ?? $this->signatureGenerator = new SignatureGenerator();
104 1
    }
105
106 1
    public function setSignatureChecker(SignatureCheckerInterface $signatureChecker) : void
107 1
    {
108
        $this->signatureChecker = $signatureChecker;
109
    }
110 1
111
    public function getSignatureChecker() : SignatureCheckerInterface
112 1
    {
113 1
        return $this->signatureChecker
114
            ?? $this->signatureChecker = new SignatureChecker($this->getSignatureGenerator());
115 1
    }
116
117 1
    public function setClassSignatureGenerator(ClassSignatureGeneratorInterface $classSignatureGenerator) : void
118
    {
119
        $this->classSignatureGenerator = $classSignatureGenerator;
120 1
    }
121
122 1
    public function getClassSignatureGenerator() : ClassSignatureGeneratorInterface
123 1
    {
124
        return $this->classSignatureGenerator
125 1
            ?? $this->classSignatureGenerator = new ClassSignatureGenerator($this->getSignatureGenerator());
126
    }
127
}
128