Completed
Push — master ( 7d7b0c...47c96c )
by Leszek
39s
created

ReferenceListDeserializer::assertIsArray()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 5
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 3
nc 2
nop 1
1
<?php
2
3
namespace Wikibase\DataModel\Deserializers;
4
5
use Deserializers\Deserializer;
6
use Deserializers\Exceptions\DeserializationException;
7
use Wikibase\DataModel\Reference;
8
use Wikibase\DataModel\ReferenceList;
9
10
/**
11
 * Package private
12
 *
13
 * @license GPL-2.0+
14
 * @author Thomas Pellissier Tanon
15
 */
16
class ReferenceListDeserializer implements Deserializer {
17
18
	/**
19
	 * @var Deserializer
20
	 */
21
	private $referenceDeserializer;
22
23
	/**
24
	 * @param Deserializer $referenceDeserializer
25
	 */
26
	public function __construct( Deserializer $referenceDeserializer ) {
27
		$this->referenceDeserializer = $referenceDeserializer;
28
	}
29
30
	/**
31
	 * @see Deserializer::deserialize
32
	 *
33
	 * @param array[] $serialization
34
	 *
35
	 * @throws DeserializationException
36
	 * @return ReferenceList
37
	 */
38
	public function deserialize( $serialization ) {
39
		if ( !is_array( $serialization ) ) {
40
			throw new DeserializationException( 'The ReferenceList serialization should be an array' );
41
		}
42
43
		return $this->getDeserialized( $serialization );
44
	}
45
46
	/**
47
	 * @param array[] $serialization
48
	 *
49
	 * @return ReferenceList
50
	 */
51
	private function getDeserialized( array $serialization ) {
52
		$referenceList = new ReferenceList();
53
54
		foreach ( $serialization as $referenceSerialization ) {
55
			/** @var Reference $reference */
56
			$reference = $this->referenceDeserializer->deserialize( $referenceSerialization );
57
			$referenceList->addReference( $reference );
58
		}
59
60
		return $referenceList;
61
	}
62
63
}
64