ReferenceListDeserializer   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 45
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 5
lcom 1
cbo 3
dl 0
loc 45
ccs 13
cts 13
cp 1
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A deserialize() 0 7 2
A getDeserialized() 0 11 2
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-or-later
14
 * @author Thomas Pellissier Tanon
15
 */
16
class ReferenceListDeserializer implements Deserializer {
17
18
	/**
19
	 * @var Deserializer
20
	 */
21
	private $referenceDeserializer;
22
23 36
	public function __construct( Deserializer $referenceDeserializer ) {
24 36
		$this->referenceDeserializer = $referenceDeserializer;
25 36
	}
26
27
	/**
28
	 * @see Deserializer::deserialize
29
	 *
30
	 * @param array[] $serialization
31
	 *
32
	 * @throws DeserializationException
33
	 * @return ReferenceList
34
	 */
35 11
	public function deserialize( $serialization ) {
36 11
		if ( !is_array( $serialization ) ) {
37 1
			throw new DeserializationException( 'The ReferenceList serialization should be an array' );
38
		}
39
40 10
		return $this->getDeserialized( $serialization );
41
	}
42
43
	/**
44
	 * @param array[] $serialization
45
	 *
46
	 * @return ReferenceList
47
	 */
48 10
	private function getDeserialized( array $serialization ) {
49 10
		$referenceList = new ReferenceList();
50
51 10
		foreach ( $serialization as $referenceSerialization ) {
52
			/** @var Reference $reference */
53 7
			$reference = $this->referenceDeserializer->deserialize( $referenceSerialization );
54 7
			$referenceList->addReference( $reference );
55
		}
56
57 10
		return $referenceList;
58
	}
59
60
}
61