Passed
Push — deprecations25 ( d669bc )
by no
03:09
created

DeserializerFactory::newTermListDeserializer()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 3
ccs 2
cts 2
cp 1
rs 10
cc 1
eloc 2
nc 1
nop 0
crap 1
1
<?php
2
3
namespace Wikibase\DataModel;
4
5
use Deserializers\Deserializer;
6
use Deserializers\DispatchableDeserializer;
7
use Deserializers\DispatchingDeserializer;
8
use Wikibase\DataModel\Deserializers\AliasGroupListDeserializer;
9
use Wikibase\DataModel\Deserializers\EntityIdDeserializer;
10
use Wikibase\DataModel\Deserializers\ItemDeserializer;
11
use Wikibase\DataModel\Deserializers\PropertyDeserializer;
12
use Wikibase\DataModel\Deserializers\ReferenceDeserializer;
13
use Wikibase\DataModel\Deserializers\ReferenceListDeserializer;
14
use Wikibase\DataModel\Deserializers\SiteLinkDeserializer;
15
use Wikibase\DataModel\Deserializers\SnakDeserializer;
16
use Wikibase\DataModel\Deserializers\SnakListDeserializer;
17
use Wikibase\DataModel\Deserializers\StatementDeserializer;
18
use Wikibase\DataModel\Deserializers\StatementListDeserializer;
19
use Wikibase\DataModel\Deserializers\TermDeserializer;
20
use Wikibase\DataModel\Deserializers\TermListDeserializer;
21
use Wikibase\DataModel\Entity\EntityIdParser;
22
23
/**
24
 * Factory for constructing Deserializer objects that can deserialize WikibaseDataModel objects.
25
 *
26
 * @since 0.1
27
 *
28
 * @license GPL-2.0+
29
 * @author Thomas Pellissier Tanon
30
 * @author Bene* < [email protected] >
31
 */
32
class DeserializerFactory {
33
34
	/**
35
	 * @var Deserializer
36
	 */
37
	private $dataValueDeserializer;
38
39
	/**
40
	 * @var EntityIdParser
41
	 */
42
	private $entityIdParser;
43
44
	/**
45
	 * @param Deserializer $dataValueDeserializer deserializer for DataValue objects
46
	 * @param EntityIdParser $entityIdParser
47
	 */
48 55
	public function __construct(
49
		Deserializer $dataValueDeserializer,
50
		EntityIdParser $entityIdParser
51
	) {
52 55
		$this->dataValueDeserializer = $dataValueDeserializer;
53 55
		$this->entityIdParser = $entityIdParser;
54 55
	}
55
56
	/**
57
	 * @deprecated since 2.5, use a DispatchingDeserializer containing the exact entity
58
	 * deserializers you need instead.
59
	 *
60
	 * @return DispatchableDeserializer that can only deserialize Item and Property objects.
61
	 */
62
	public function newEntityDeserializer() {
63
		return new DispatchingDeserializer( array(
0 ignored issues
show
Documentation introduced by
array($this->newItemDese...PropertyDeserializer()) is of type array<integer,object<Des...izers\\Deserializer>"}>, but the function expects a array<integer,object<Des...patchableDeserializer>>.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
64
			$this->newItemDeserializer(),
65
			$this->newPropertyDeserializer()
66
		) );
67
	}
68
69
	/**
70
	 * Returns a Deserializer that can deserialize Item objects.
71
	 *
72
	 * @since 2.1
73
	 *
74
	 * @return Deserializer
75
	 */
76 16
	public function newItemDeserializer() {
77 16
		return new ItemDeserializer(
78 16
			$this->newEntityIdDeserializer(),
79 16
			$this->newTermListDeserializer(),
80 16
			$this->newAliasGroupListDeserializer(),
81 16
			$this->newStatementListDeserializer(),
82 16
			$this->newSiteLinkDeserializer()
83
		);
84
	}
85
86
	/**
87
	 * Returns a Deserializer that can deserialize Property objects.
88
	 *
89
	 * @since 2.1
90
	 *
91
	 * @return Deserializer
92
	 */
93 16
	public function newPropertyDeserializer() {
94 16
		return new PropertyDeserializer(
95 16
			$this->newEntityIdDeserializer(),
96 16
			$this->newTermListDeserializer(),
97 16
			$this->newAliasGroupListDeserializer(),
98 16
			$this->newStatementListDeserializer()
99
		);
100
	}
101
102
	/**
103
	 * Returns a Deserializer that can deserialize SiteLink objects.
104
	 *
105
	 * @return Deserializer
106
	 */
107 20
	public function newSiteLinkDeserializer() {
108 20
		return new SiteLinkDeserializer( $this->newEntityIdDeserializer() );
109
	}
110
111
	/**
112
	 * Returns a Deserializer that can deserialize StatementList objects.
113
	 *
114
	 * @since 1.4
115
	 *
116
	 * @return Deserializer
117
	 */
118 21
	public function newStatementListDeserializer() {
119 21
		return new StatementListDeserializer( $this->newStatementDeserializer() );
120
	}
121
122
	/**
123
	 * Returns a Deserializer that can deserialize Statement objects.
124
	 *
125
	 * @since 1.4
126
	 *
127
	 * @return DispatchableDeserializer
128
	 */
129 29
	public function newStatementDeserializer() {
130 29
		return new StatementDeserializer(
131 29
			$this->newSnakDeserializer(),
132 29
			$this->newSnakListDeserializer(),
133 29
			$this->newReferencesDeserializer()
134
		);
135
	}
136
137
	/**
138
	 * Returns a Deserializer that can deserialize ReferenceList objects.
139
	 *
140
	 * @return Deserializer
141
	 */
142 33
	public function newReferencesDeserializer() {
143 33
		return new ReferenceListDeserializer( $this->newReferenceDeserializer() );
144
	}
145
146
	/**
147
	 * Returns a Deserializer that can deserialize Reference objects.
148
	 *
149
	 * @return Deserializer
150
	 */
151 37
	public function newReferenceDeserializer() {
152 37
		return new ReferenceDeserializer( $this->newSnakListDeserializer() );
153
	}
154
155
	/**
156
	 * Returns a Deserializer that can deserialize SnakList objects.
157
	 *
158
	 * @since 1.4
159
	 *
160
	 * @return Deserializer
161
	 */
162 41
	public function newSnakListDeserializer() {
163 41
		return new SnakListDeserializer( $this->newSnakDeserializer() );
164
	}
165
166
	/**
167
	 * Returns a Deserializer that can deserialize Snak objects.
168
	 *
169
	 * @return Deserializer
170
	 */
171 47
	public function newSnakDeserializer() {
172 47
		return new SnakDeserializer( $this->dataValueDeserializer, $this->newEntityIdDeserializer() );
173
	}
174
175
	/**
176
	 * Returns a Deserializer that can deserialize EntityId objects.
177
	 *
178
	 * @return Deserializer
179
	 */
180 52
	public function newEntityIdDeserializer() {
181 52
		return new EntityIdDeserializer( $this->entityIdParser );
182
	}
183
184
	/**
185
	 * Returns a Deserializer that can deserialize Term objects.
186
	 *
187
	 * @since 1.5
188
	 *
189
	 * @return Deserializer
190
	 */
191 19
	public function newTermDeserializer() {
192 19
		return new TermDeserializer();
193
	}
194
195
	/**
196
	 * Returns a Deserializer that can deserialize TermList objects.
197
	 *
198
	 * @since 1.5
199
	 *
200
	 * @return Deserializer
201
	 */
202 18
	public function newTermListDeserializer() {
203 18
		return new TermListDeserializer( $this->newTermDeserializer() );
204
	}
205
206
	/**
207
	 * Returns a Deserializer that can deserialize AliasGroupList objects.
208
	 *
209
	 * @since 1.5
210
	 *
211
	 * @return Deserializer
212
	 */
213 18
	public function newAliasGroupListDeserializer() {
214 18
		return new AliasGroupListDeserializer();
215
	}
216
217
}
218