Passed
Pull Request — master (#3)
by Artem
02:31
created

IsoCodesFactory::getTerritoryLanguages()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 3
rs 10
cc 1
eloc 1
nc 1
nop 0
1
<?php
2
3
namespace Sokil\IsoCodes;
4
5
use Sokil\IsoCodes\Database\Countries;
6
use Sokil\IsoCodes\Database\Currencies;
7
use Sokil\IsoCodes\Database\HistoricCountries;
8
use Sokil\IsoCodes\Database\Languages;
9
use Sokil\IsoCodes\Database\Scripts;
10
use Sokil\IsoCodes\Database\Subdivisions;
11
use Sokil\IsoCodes\Database\TerritoryLanguages;
12
13
/**
14
 * Factory class to build ISO databases
15
 */
16
class IsoCodesFactory
17
{
18
    /**
19
     * @var AbstractDatabase[]
20
     */
21
    private $databases = [];
22
23
    /**
24
     * @param string $className
25
     *
26
     * @return AbstractDatabase
27
     */
28
    private function getDatabase($className)
29
    {
30
        if (empty($this->databases[$className])) {
31
            $this->databases[$className] = new $className();
32
        }
33
34
        return $this->databases[$className];
35
    }
36
37
    /**
38
     * ISO 3166-1
39
     *
40
     * @return Countries
41
     */
42
    public function getCountries()
43
    {
44
        return $this->getDatabase(Countries::class);
45
    }
46
47
    /**
48
     * ISO 3166-2
49
     *
50
     * @return Subdivisions
51
     */
52
    public function getSubdivisions()
53
    {
54
        return $this->getDatabase(Subdivisions::class);
55
    }
56
    
57
    /**
58
     * ISO 3166-3
59
     *
60
     * @return HistoricCountries
61
     */
62
    public function getHistoricCountries()
63
    {
64
        return $this->getDatabase(HistoricCountries::class);
65
    }
66
    
67
    /**
68
     * ISO 15924
69
     *
70
     * @return Scripts
71
     */
72
    public function getScripts()
73
    {
74
        return $this->getDatabase(Scripts::class);
75
    }
76
    
77
    /**
78
     * ISO 4217
79
     *
80
     * @return Currencies
81
     */
82
    public function getCurrencies()
83
    {
84
        return $this->getDatabase(Currencies::class);
85
    }
86
    
87
    /**
88
     * ISO 639-3
89
     * @return Languages
90
     */
91
    public function getLanguages()
92
    {
93
        return $this->getDatabase(Languages::class);
94
    }
95
96
    /**
97
     * Territory Languages
98
     * @return TerritoryLanguages
99
     */
100
    public function getTerritoryLanguages()
101
    {
102
        return $this->getDatabase(TerritoryLanguages::class);
103
    }
104
}
105