1 | <?php |
||
19 | class AliasGroupListDeserializer implements Deserializer { |
||
20 | |||
21 | /** |
||
22 | * @see Deserializer::deserialize |
||
23 | * |
||
24 | * @param array[] $serialization |
||
25 | * |
||
26 | * @throws DeserializationException |
||
27 | * @return AliasGroupList |
||
28 | */ |
||
29 | 23 | public function deserialize( $serialization ) { |
|
36 | |||
37 | /** |
||
38 | * @param array[] $serialization |
||
39 | * |
||
40 | * @return AliasGroupList |
||
41 | */ |
||
42 | 22 | private function getDeserialized( array $serialization ) { |
|
53 | |||
54 | /** |
||
55 | * @param array $serialization |
||
56 | * @param string $languageCode |
||
57 | * |
||
58 | * @return AliasGroup |
||
59 | */ |
||
60 | 15 | private function deserializeAliasGroup( array $serialization, $languageCode ) { |
|
61 | 15 | $aliases = array(); |
|
62 | |||
63 | 15 | foreach ( $serialization as $aliasSerialization ) { |
|
64 | 14 | $this->assertIsValidAliasSerialization( $aliasSerialization, $languageCode ); |
|
65 | |||
66 | 9 | $aliases[] = $aliasSerialization['value']; |
|
67 | } |
||
68 | |||
69 | 10 | return new AliasGroup( |
|
70 | $languageCode, |
||
71 | 10 | $aliases |
|
72 | ); |
||
73 | } |
||
74 | |||
75 | 14 | private function assertIsValidAliasSerialization( $serialization, $requestedLanguage ) { |
|
89 | |||
90 | 13 | private function requireAttribute( array $array, $attributeName ) { |
|
91 | 13 | if ( !array_key_exists( $attributeName, $array ) ) { |
|
92 | 2 | throw new MissingAttributeException( |
|
93 | 2 | $attributeName |
|
94 | ); |
||
95 | } |
||
96 | 12 | } |
|
97 | |||
98 | 11 | private function assertNotAttribute( array $array, $key ) { |
|
99 | 11 | if ( array_key_exists( $key, $array ) ) { |
|
100 | 1 | throw new InvalidAttributeException( |
|
101 | $key, |
||
102 | 1 | $array[$key], |
|
103 | 1 | 'Deserialization of attribute ' . $key . ' not supported.' |
|
104 | ); |
||
105 | } |
||
106 | 10 | } |
|
107 | |||
108 | 10 | private function assertRequestedAndActualLanguageMatch( |
|
120 | |||
121 | 16 | private function assertAttributeIsArray( array $array, $attributeName ) { |
|
124 | |||
125 | 16 | private function assertAttributeInternalType( array $array, $attributeName, $internalType ) { |
|
126 | 16 | if ( gettype( $array[$attributeName] ) !== $internalType ) { |
|
127 | 1 | throw new InvalidAttributeException( |
|
134 | |||
135 | } |
||
136 |