IsoCodesFactory::getHistoricCountries()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

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