ReferenceListSerializer::serialize()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 10

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 10
ccs 6
cts 6
cp 1
rs 9.9332
c 0
b 0
f 0
cc 2
nc 2
nop 1
crap 2
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-or-later
15
 * @author Thomas Pellissier Tanon
16
 */
17
class ReferenceListSerializer implements DispatchableSerializer {
18
19
	/**
20
	 * @var Serializer
21
	 */
22
	private $referenceSerializer;
23
24 37
	public function __construct( Serializer $referenceSerializer ) {
25 37
		$this->referenceSerializer = $referenceSerializer;
26 37
	}
27
28
	/**
29
	 * @see Serializer::isSerializerFor
30
	 *
31
	 * @param mixed $object
32
	 *
33
	 * @return bool
34
	 */
35 15
	public function isSerializerFor( $object ) {
36 15
		return $object instanceof ReferenceList;
37
	}
38
39
	/**
40
	 * @see Serializer::serialize
41
	 *
42
	 * @param ReferenceList $object
43
	 *
44
	 * @throws SerializationException
45
	 * @return array[]
46
	 */
47 10
	public function serialize( $object ) {
48 10
		if ( !$this->isSerializerFor( $object ) ) {
49 3
			throw new UnsupportedObjectException(
50 3
				$object,
51 3
				'ReferenceListSerializer can only serialize ReferenceList objects'
52
			);
53
		}
54
55 7
		return $this->getSerialized( $object );
56
	}
57
58 7
	private function getSerialized( ReferenceList $references ) {
59 7
		$serialization = [];
60
61 7
		foreach ( $references as $reference ) {
62 3
			$serialization[] = $this->referenceSerializer->serialize( $reference );
63
		}
64
65 7
		return $serialization;
66
	}
67
68
}
69