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

AliasGroupListSerializer   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 60
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Test Coverage

Coverage 95%

Importance

Changes 0
Metric Value
wmc 7
lcom 1
cbo 3
dl 0
loc 60
ccs 19
cts 20
cp 0.95
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A serialize() 0 4 1
A getSerialized() 0 13 3
A assertIsSerializerFor() 0 8 2
1
<?php
2
3
namespace Wikibase\DataModel\Serializers;
4
5
use Serializers\Exceptions\UnsupportedObjectException;
6
use Serializers\Serializer;
7
use Wikibase\DataModel\Term\AliasGroupList;
8
9
/**
10
 * Package private
11
 *
12
 * @license GPL-2.0+
13
 * @author Addshore
14
 * @author Bene* < [email protected] >
15
 */
16
class AliasGroupListSerializer implements Serializer {
17
18
	/**
19
	 * @var Serializer
20
	 */
21
	private $aliasGroupSerializer;
22
23
	/**
24
	 * @var bool
25
	 */
26
	private $useObjectsForMaps;
27
28
	/**
29
	 * @param Serializer $aliasGroupSerializer
30
	 * @param bool $useObjectsForMaps
31
	 */
32 18
	public function __construct( Serializer $aliasGroupSerializer, $useObjectsForMaps ) {
33 18
		$this->aliasGroupSerializer = $aliasGroupSerializer;
34 18
		$this->useObjectsForMaps = $useObjectsForMaps;
35 18
	}
36
37
	/**
38
	 * @param AliasGroupList $object
39
	 *
40
	 * @return array[]
41
	 */
42 18
	public function serialize( $object ) {
43 18
		$this->assertIsSerializerFor( $object );
44 17
		return $this->getSerialized( $object );
45
	}
46
47 18
	private function assertIsSerializerFor( $object ) {
48 18
		if ( !( $object instanceof AliasGroupList ) ) {
49 1
			throw new UnsupportedObjectException(
50
				$object,
51 1
				'AliasGroupListSerializer can only serialize AliasGroupList objects'
52
			);
53
		}
54 17
	}
55
56
	/**
57
	 * @param AliasGroupList $aliasGroupList
58
	 *
59
	 * @return array[]
60
	 */
61 17
	private function getSerialized( AliasGroupList $aliasGroupList ) {
62 17
		$serialization = array();
63
64 17
		foreach ( $aliasGroupList->getIterator() as $aliasGroup ) {
65 6
			$serialization[$aliasGroup->getLanguageCode()] = $this->aliasGroupSerializer->serialize( $aliasGroup );
66
		}
67
68 17
		if ( $this->useObjectsForMaps ) {
69 2
			$serialization = (object)$serialization;
70
		}
71
72 17
		return $serialization;
73
	}
74
75
}
76