Passed
Push — deprecations25 ( d669bc...f844c9 )
by
unknown
08:01 queued 03:37
created

StatementListDeserializer::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 3
ccs 3
cts 3
cp 1
rs 10
cc 1
eloc 2
nc 1
nop 1
crap 1
1
<?php
2
3
namespace Wikibase\DataModel\Deserializers;
4
5
use Deserializers\Deserializer;
6
use Deserializers\Exceptions\DeserializationException;
7
use Wikibase\DataModel\Statement\Statement;
8
use Wikibase\DataModel\Statement\StatementList;
9
10
/**
11
 * Package private
12
 *
13
 * @license GPL-2.0+
14
 * @author Bene* < [email protected] >
15
 * @author Addshore
16
 */
17
class StatementListDeserializer implements Deserializer {
18
19
	/**
20
	 * @var Deserializer
21
	 */
22
	private $statementDeserializer;
23
24 26
	public function __construct( Deserializer $statementDeserializer ) {
25 26
		$this->statementDeserializer = $statementDeserializer;
26 26
	}
27
28
	/**
29
	 * @see Deserializer::deserialize
30
	 *
31
	 * @param array[] $serialization
32
	 *
33
	 * @throws DeserializationException
34
	 * @return StatementList
35
	 */
36 19
	public function deserialize( $serialization ) {
37 19
		if ( !is_array( $serialization ) ) {
38 1
			throw new DeserializationException( 'The StatementList serialization should be an array' );
39
		}
40
41 18
		return $this->getDeserialized( $serialization );
42
	}
43
44
	/**
45
	 * @param array[] $serialization
46
	 *
47
	 * @return StatementList
48
	 */
49 18
	private function getDeserialized( array $serialization ) {
50 18
		$statementList = new StatementList();
51
52 18
		foreach ( $serialization as $key => $statementArray ) {
53 10
			if ( is_string( $key ) ) {
54 10
				if ( !is_array( $statementArray ) ) {
55 2
					throw new DeserializationException( "The statements per property \"$key\" should be an array" );
56
				}
57
58 8
				foreach ( $statementArray as $statementSerialization ) {
59
					/** @var Statement $statement */
60 7
					$statement = $this->statementDeserializer->deserialize( $statementSerialization );
61 8
					$statementList->addStatement( $statement );
62
				}
63
			} else {
64
				/** @var Statement $statement */
65
				$statement = $this->statementDeserializer->deserialize( $statementArray );
66 8
				$statementList->addStatement( $statement );
67
			}
68
		}
69
70 16
		return $statementList;
71
	}
72
73
}
74