Passed
Push — master ( 1624f2...3d792a )
by
unknown
01:39
created

ReferenceListSerializer::__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\Serializers;
4
5
use Serializers\DispatchableSerializer;
6
use Serializers\Exceptions\SerializationException;
7
use Serializers\Exceptions\UnsupportedObjectException;
8
use Serializers\Serializer;
9
use Wikibase\DataModel\ReferenceList;
10
11
/**
12
 * Package private
13
 *
14
 * @license GPL-2.0+
15
 * @author Thomas Pellissier Tanon
16
 */
17
class ReferenceListSerializer implements DispatchableSerializer {
18
19
	/**
20
	 * @var Serializer
21
	 */
22
	private $referenceSerializer;
23
24
	/**
25
	 * @param Serializer $referenceSerializer
26
	 */
27 37
	public function __construct( Serializer $referenceSerializer ) {
28 37
		$this->referenceSerializer = $referenceSerializer;
29 37
	}
30
31
	/**
32
	 * @see Serializer::isSerializerFor
33
	 *
34
	 * @param mixed $object
35
	 *
36
	 * @return bool
37
	 */
38 15
	public function isSerializerFor( $object ) {
39 15
		return $object instanceof ReferenceList;
40
	}
41
42
	/**
43
	 * @see Serializer::serialize
44
	 *
45
	 * @param ReferenceList $object
46
	 *
47
	 * @throws SerializationException
48
	 * @return array[]
49
	 */
50 10
	public function serialize( $object ) {
51 10
		if ( !$this->isSerializerFor( $object ) ) {
52 3
			throw new UnsupportedObjectException(
53
				$object,
54 3
				'ReferenceListSerializer can only serialize ReferenceList objects'
55
			);
56
		}
57
58 7
		return $this->getSerialized( $object );
59
	}
60
61 7
	private function getSerialized( ReferenceList $references ) {
62 7
		$serialization = array();
63
64 7
		foreach ( $references as $reference ) {
65 3
			$serialization[] = $this->referenceSerializer->serialize( $reference );
66
		}
67
68 7
		return $serialization;
69
	}
70
71
}
72