RegionRepository   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 73
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Test Coverage

Coverage 94.12%

Importance

Changes 0
Metric Value
wmc 8
lcom 1
cbo 2
dl 0
loc 73
ccs 16
cts 17
cp 0.9412
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A findAll() 0 8 2
A findByCode() 0 9 2
A getLoader() 0 8 2
A getMapper() 0 8 2
1
<?php
2
3
namespace GeoBase\Regions;
4
5
use GeoBase\Regions\Region\RegionCollection;
6
use GeoBase\Regions\Region\RegionEntity;
7
use GeoBase\Regions\Region\RegionLoader;
8
use GeoBase\Regions\Region\RegionMapper;
9
10
class RegionRepository
11
{
12
    /**
13
     * @var RegionCollection
14
     */
15
    private static $collection;
16
17
    /**
18
     * @var RegionEntity[]
19
     */
20
    private static $items = [];
21
22
    /**
23
     * @var RegionMapper
24
     */
25
    private static $mapper;
26
27
    /**
28
     * @var RegionLoader
29
     */
30
    private static $loader;
31
32
    /**
33
     * @return RegionCollection
34
     */
35 1
    public static function findAll()
36
    {
37 1
        if (null === self::$collection) {
38 1
            self::$collection = self::getMapper()->mapArrayToCollection(self::getLoader()->loadAllRegions());
39
        }
40
41 1
        return self::$collection;
42
    }
43
44
    /**
45
     * @param string $code
46
     *
47
     * @return null|RegionEntity
48
     */
49 1
    public static function findByCode($code)
50
    {
51 1
        if (!isset(self::$items[$code])) {
52 1
            return self::$items[$code] =
53 1
                self::getMapper()->mapArrayToEntity(self::getLoader()->loadRegion($code));
54
        }
55
56
        return self::$items[$code];
57
    }
58
59
    /**
60
     * @return RegionLoader
61
     */
62 2
    private static function getLoader()
63
    {
64 2
        if (null === self::$loader) {
65 1
            self::$loader = new RegionLoader();
66
        }
67
68 2
        return self::$loader;
69
    }
70
71
    /**
72
     * @return RegionMapper
73
     */
74 2
    private static function getMapper()
75
    {
76 2
        if (null === self::$mapper) {
77 1
            self::$mapper = new RegionMapper();
78
        }
79
80 2
        return self::$mapper;
81
    }
82
}
83