Completed
Push — master ( ec569d...2e9f5b )
by Marcin
01:57
created

Api::getImdbApi()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 8
ccs 0
cts 7
cp 0
rs 9.4285
cc 2
eloc 4
nc 2
nop 0
crap 6
1
<?php
2
/**
3
 * xMDB-API
4
 *
5
 * Copyright © 2017 pudelek.org.pl
6
 *
7
 * @license MIT License (MIT)
8
 *
9
 * For the full copyright and license information, please view source file
10
 * that is bundled with this package in the file LICENSE
11
 *
12
 * @author  Marcin Pudełek <[email protected]>
13
 */
14
15
/**
16
 * Created by Marcin Pudełek <[email protected]>
17
 * Date: 29.11.2017
18
 * Time: 16:56
19
 */
20
21
namespace mrcnpdlk\Xmdb;
22
23
24
class Api
25
{
26
    /**
27
     * @var \mrcnpdlk\Xmdb\Api
28
     */
29
    protected static $instance;
30
    /**
31
     * @var \mrcnpdlk\Xmdb\Client
32
     */
33
    private $oClient;
34
35
    /**
36
     * @var \mrcnpdlk\Xmdb\Tmdb
37
     */
38
    private $oTmdbApi;
39
    /**
40
     * @var \mrcnpdlk\Xmdb\Imdb
41
     */
42
    private $oImdbApi;
43
44
45
    /**
46
     * Api constructor.
47
     *
48
     * @param \mrcnpdlk\Xmdb\Client $oClient
49
     */
50
    protected function __construct(Client $oClient)
51
    {
52
        $this->oClient = $oClient;
53
    }
54
55
    /**
56
     * @param \mrcnpdlk\Xmdb\Client $oClient
57
     *
58
     * @return \mrcnpdlk\Xmdb\Api
59
     */
60
    public static function create(Client $oClient): Api
61
    {
62
        if (null === static::$instance) {
63
            static::$instance = new static($oClient);
64
        }
65
66
        return static::$instance;
67
    }
68
69
    /**
70
     * @return \mrcnpdlk\Xmdb\Api
71
     * @throws \mrcnpdlk\Xmdb\Exception
72
     */
73
    public static function getInstance(): Api
74
    {
75
        if (null === static::$instance) {
76
            throw new Exception(sprintf('First call CREATE method!'));
77
        }
78
79
        return static::$instance;
80
    }
81
82
    /**
83
     * @return \mrcnpdlk\Xmdb\Client
84
     */
85
    public function getClient(): Client
86
    {
87
        return $this->oClient;
88
    }
89
90
    /**
91
     * @return \mrcnpdlk\Xmdb\Imdb
92
     * @throws \mrcnpdlk\Xmdb\Exception
93
     */
94
    public function getImdbApi(): Imdb
95
    {
96
        if (null === $this->oImdbApi) {
97
            $this->oImdbApi = new Imdb($this->oClient);
98
        }
99
100
        return $this->oImdbApi;
101
    }
102
103
    /**
104
     * @return \mrcnpdlk\Xmdb\Tmdb
105
     * @throws \mrcnpdlk\Xmdb\Exception
106
     */
107
    public function getTmdbApi(): Tmdb
108
    {
109
        if (null === $this->oTmdbApi) {
110
            $this->oTmdbApi = new Tmdb($this->oClient);
111
        }
112
113
        return $this->oTmdbApi;
114
    }
115
}
116