Completed
Push — master ( 41a25f...269818 )
by Mike
02:08
created

BusinessLocatorProxy::writer()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
eloc 1
dl 0
loc 3
ccs 0
cts 2
cp 0
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
crap 2
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
     * @var \Xervice\Core\Business\Model\Persistence\Reader\ReaderInterface
31
     */
32
    private $reader;
0 ignored issues
show
introduced by
The private property $reader is not used, and could be removed.
Loading history...
33
34
    /**
35
     * @var \Xervice\Core\Business\Model\Persistence\Writer\WriterInterface
36
     */
37
    private $writer;
0 ignored issues
show
introduced by
The private property $writer is not used, and could be removed.
Loading history...
38
39
    /**
40
     * @return \Xervice\Core\Business\Model\Factory\FactoryInterface
41
     */
42 5
    public function factory(): FactoryInterface
43
    {
44 5
        if ($this->factory === null) {
45 3
            $class = $this->getServiceClass('BusinessFactory', self::DIRECTORY) ?: AbstractBusinessFactory::class;
46 3
            $this->factory = new $class(
47 3
                $this->config(),
48 3
                $this->container()
49
            );
50
        }
51
52 5
        return $this->factory;
53
    }
54
55
    /**
56
     * @return \Xervice\Core\Business\Model\Facade\FacadeInterface
57
     */
58 3
    public function facade(): FacadeInterface
59
    {
60 3
        if ($this->facade === null) {
61 3
            $class = $this->getServiceClass('Facade', self::DIRECTORY) ?: AbstractFacade::class;
62 3
            $this->facade = new $class(
63 3
                $this->factory()
64
            );
65
        }
66
67 3
        return $this->facade;
68
    }
69
70
    /**
71
     * @return \Xervice\Core\Business\Model\Persistence\Reader\ReaderInterface
72
     */
73
    public function reader(): ReaderInterface
74
    {
75
        return $this->persistenceLocator->reader();
76
    }
77
78
    /**
79
     * @return \Xervice\Core\Business\Model\Persistence\Writer\WriterInterface
80
     */
81
    public function writer(): WriterInterface
82
    {
83
        return $this->persistenceLocator->writer();
84
    }
85
}