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

ReferenceListSerializer::serialize()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 10
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 2.0185

Importance

Changes 0
Metric Value
dl 0
loc 10
ccs 5
cts 6
cp 0.8333
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 6
nc 2
nop 1
crap 2.0185
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