1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
namespace Mechpave\ImgurClient\Mapper; |
4
|
|
|
|
5
|
|
|
use Mechpave\ImgurClient\Model\EntityClassModel; |
6
|
|
|
|
7
|
|
|
/** |
8
|
|
|
* Class ObjectMapper |
9
|
|
|
* @package Mechpave\ImgurClient\Mapper |
10
|
|
|
*/ |
11
|
|
|
class ObjectMapper |
12
|
|
|
{ |
13
|
|
|
/** |
14
|
|
|
* Token entity class |
15
|
|
|
* @var string |
16
|
|
|
*/ |
17
|
|
|
protected $tokenClass = EntityClassModel::TOKEN; |
18
|
|
|
|
19
|
|
|
/** |
20
|
|
|
* Image entity class |
21
|
|
|
* @var string |
22
|
|
|
*/ |
23
|
|
|
protected $imageClass = EntityClassModel::IMAGE; |
24
|
|
|
|
25
|
|
|
/** |
26
|
|
|
* Album entity class |
27
|
|
|
* @var string |
28
|
|
|
*/ |
29
|
|
|
protected $albumClass = EntityClassModel::ALBUM; |
30
|
|
|
|
31
|
|
|
/** |
32
|
|
|
* @param $tokenClass |
33
|
|
|
* @throws \InvalidArgumentException |
34
|
|
|
* @return ObjectMapper |
35
|
|
|
*/ |
36
|
|
|
public function setTokenClass($tokenClass) { |
37
|
|
|
$this->checkClass($tokenClass, 'Mechpave\ImgurClient\Entity\TokenInterface'); |
38
|
|
|
$this->tokenClass = $tokenClass; |
39
|
|
|
|
40
|
|
|
return $this; |
41
|
|
|
} |
42
|
|
|
|
43
|
|
|
/** |
44
|
|
|
* @return string |
45
|
|
|
*/ |
46
|
|
|
public function getTokenClass() |
47
|
|
|
{ |
48
|
|
|
return $this->tokenClass; |
49
|
|
|
} |
50
|
|
|
|
51
|
|
|
/** |
52
|
|
|
* @param string $imageClass |
53
|
|
|
* @throws \InvalidArgumentException |
54
|
|
|
* @return ObjectMapper |
55
|
|
|
*/ |
56
|
|
|
public function setImageClass($imageClass) |
57
|
|
|
{ |
58
|
|
|
$this->checkClass($imageClass, 'Mechpave\ImgurClient\Entity\ImageInterface'); |
59
|
|
|
$this->imageClass = $imageClass; |
60
|
|
|
|
61
|
|
|
return $this; |
62
|
|
|
} |
63
|
|
|
|
64
|
|
|
/** |
65
|
|
|
* @return string |
66
|
|
|
*/ |
67
|
|
|
public function getImageClass() |
68
|
|
|
{ |
69
|
|
|
return $this->imageClass; |
70
|
|
|
} |
71
|
|
|
|
72
|
|
|
/** |
73
|
|
|
* @param string $albumClass |
74
|
|
|
* @return $this |
75
|
|
|
*/ |
76
|
|
|
public function setAlbumClass($albumClass) |
77
|
|
|
{ |
78
|
|
|
$this->checkClass($albumClass, 'Mechpave\ImgurClient\Entity\AlbumInterface'); |
79
|
|
|
$this->albumClass = $albumClass; |
80
|
|
|
|
81
|
|
|
return $this; |
82
|
|
|
} |
83
|
|
|
|
84
|
|
|
/** |
85
|
|
|
* @return string |
86
|
|
|
*/ |
87
|
|
|
public function getAlbumClass() |
88
|
|
|
{ |
89
|
|
|
return $this->albumClass; |
90
|
|
|
} |
91
|
|
|
|
92
|
|
|
/** |
93
|
|
|
* Checks if $fqn is an instantiable class and implements necessary interface |
94
|
|
|
* @param string $fqn |
95
|
|
|
* @param $interface |
96
|
|
|
* @throws \InvalidArgumentException |
97
|
|
|
*/ |
98
|
|
|
protected function checkClass($fqn, $interface) |
99
|
|
|
{ |
100
|
|
|
if (!class_exists($fqn)) { |
101
|
|
|
throw new \InvalidArgumentException($fqn . ' class does not exist'); |
102
|
|
|
} |
103
|
|
|
|
104
|
|
|
$reflectionClass = new \ReflectionClass($fqn); |
105
|
|
|
|
106
|
|
|
if (!$reflectionClass->isInstantiable()) { |
107
|
|
|
throw new \InvalidArgumentException($fqn . ' must be FQN to an instantiable class'); |
108
|
|
|
} |
109
|
|
|
|
110
|
|
|
$interfaces = class_implements($fqn); |
111
|
|
|
if($interfaces && !in_array($interface, $interfaces)) { |
|
|
|
|
112
|
|
|
throw new \InvalidArgumentException($fqn . 'must implement ' . $interface); |
113
|
|
|
} |
114
|
|
|
} |
115
|
|
|
} |
This check marks implicit conversions of arrays to boolean values in a comparison. While in PHP an empty array is considered to be equal (but not identical) to false, this is not always apparent.
Consider making the comparison explicit by using
empty(..)
or! empty(...)
instead.