BusinessLocatorProxy::reader()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
eloc 1
dl 0
loc 3
ccs 2
cts 2
cp 1
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
crap 1
1
<?php
2
declare(strict_types=1);
3
4
namespace Xervice\Core\Business\Model\Locator\Proxy\Business;
5
6
7
use Xervice\Core\Business\Model\Facade\AbstractFacade;
8
use Xervice\Core\Business\Model\Facade\FacadeInterface;
9
use Xervice\Core\Business\Model\Factory\AbstractBusinessFactory;
10
use Xervice\Core\Business\Model\Factory\FactoryInterface;
11
use Xervice\Core\Business\Model\Locator\Proxy\AbstractLocatorProxy;
12
use Xervice\Core\Business\Model\Persistence\Reader\ReaderInterface;
13
use Xervice\Core\Business\Model\Persistence\Writer\WriterInterface;
14
15
class BusinessLocatorProxy extends AbstractLocatorProxy implements BusinessLocatorProxyInterface
16
{
17
    private const DIRECTORY = 'Business';
18
19
    /**
20
     * @var \Xervice\Core\Business\Model\Factory\FactoryInterface
21
     */
22
    private $factory;
23
24
    /**
25
     * @var \Xervice\Core\Business\Model\Facade\FacadeInterface
26
     */
27
    private $facade;
28
29
    /**
30
     * @return \Xervice\Core\Business\Model\Factory\FactoryInterface
31
     */
32 5
    public function factory(): FactoryInterface
33
    {
34 5
        if ($this->factory === null) {
35 3
            $class = $this->getServiceClass('BusinessFactory', self::DIRECTORY) ?: AbstractBusinessFactory::class;
36 3
            $this->factory = new $class(
37 3
                $this->config(),
38 3
                $this->container(),
39 3
                $this->reader(),
40 3
                $this->writer()
41
            );
42
        }
43
44 5
        return $this->factory;
45
    }
46
47
    /**
48
     * @return \Xervice\Core\Business\Model\Facade\FacadeInterface
49
     */
50 6
    public function facade(): FacadeInterface
51
    {
52 6
        if ($this->facade === null) {
53 3
            $class = $this->getServiceClass('Facade', self::DIRECTORY) ?: AbstractFacade::class;
54 3
            $this->facade = new $class(
55 3
                $this->factory(),
56 3
                $this->config()
57
            );
58
        }
59
60 6
        return $this->facade;
61
    }
62
63
    /**
64
     * @return \Xervice\Core\Business\Model\Persistence\Reader\ReaderInterface
65
     */
66 3
    public function reader(): ReaderInterface
67
    {
68 3
        return $this->persistenceLocator()->reader();
69
    }
70
71
    /**
72
     * @return \Xervice\Core\Business\Model\Persistence\Writer\WriterInterface
73
     */
74 3
    public function writer(): WriterInterface
75
    {
76 3
        return $this->persistenceLocator()->writer();
77
    }
78
}