DynamicBusinessLocator::getLocator()   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
c 0
b 0
f 0
ccs 2
cts 2
cp 1
rs 10
cc 1
nc 1
nop 0
crap 1
1
<?php
2
declare(strict_types=1);
3
4
namespace Xervice\Core\Business\Model\Locator\Dynamic\Business;
5
6
7
use Xervice\Core\Business\Exception\ServiceNotFoundException;
8
use Xervice\Core\Business\Model\Facade\FacadeInterface;
9
use Xervice\Core\Business\Model\Factory\FactoryInterface;
10
use Xervice\Core\Business\Model\Locator\Locator;
11
use Xervice\Core\Business\Model\Locator\Proxy\Business\BusinessLocatorProxy;
12
13
trait DynamicBusinessLocator
14
{
15
    /**
16
     * @return \Xervice\Core\Business\Model\Facade\FacadeInterface
17
     */
18 1
    public function getFacade(): FacadeInterface
19
    {
20 1
        return $this->getLocator()->facade();
21
    }
22
23
    /**
24
     * @return \Xervice\Core\Business\Model\Factory\FactoryInterface
25
     */
26 1
    public function getFactory(): FactoryInterface
27
    {
28 1
        return $this->getLocator()->factory();
29
    }
30
31
    /**
32
     * @return \Xervice\Core\Business\Model\Locator\Proxy\Business\BusinessLocatorProxy
33
     */
34 2
    protected function getLocator(): BusinessLocatorProxy
35
    {
36 2
        return Locator::getInstance()->{$this->getServiceName()}()->businessLocator();
37
    }
38
39
    /**
40
     * @return string
41
     * @throws \Xervice\Core\Business\Exception\ServiceNotFoundException
42
     */
43 2
    protected function getServiceName(): string
44
    {
45 2
        if (!preg_match('@([A-Za-z]+)\\\\([A-Za-z]+)\\\\([A-Za-z\\\\]+)@', \get_class($this), $matches)) {
46
            throw new ServiceNotFoundException(__NAMESPACE__);
47
        }
48
49 2
        return $matches[2];
50
    }
51
}