ReferenceListSerializer   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 52
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 6
lcom 1
cbo 2
dl 0
loc 52
ccs 16
cts 16
cp 1
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A isSerializerFor() 0 3 1
A serialize() 0 10 2
A getSerialized() 0 9 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