Utility   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 0

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 5
lcom 0
cbo 0
dl 0
loc 37
ccs 6
cts 6
cp 1
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
B xmlToArray() 0 34 5
1
<?php
2
declare(strict_types=1);
3
namespace Thunder\Currenz\Utility;
4
5
final class Utility
6
{
7 1
    public static function xmlToArray(string $xmlString): array
8
    {
9 1
        $xml = new \DOMDocument();
10 1
        $xml->loadXML($xmlString);
11
12 1
        $value = function(\DOMElement $node, string $name): ?string {
13 1
            return $node->getElementsByTagName($name)->item(0)->nodeValue ?? null;
14 1
        };
15
16
        $data = [];
17
        /** @var \DOMElement $node */
18
        foreach($xml->childNodes[0]->childNodes[1]->childNodes as $node) {
19
            if(XML_ELEMENT_NODE !== $node->nodeType) {
20
                continue;
21
            }
22
23
            $code = $value($node, 'Ccy');
24
            $country = $value($node, 'CtryNm');
25
            if(false === array_key_exists($code, $data)) {
26
                $data[$code] = [
27
                    'code' => $code,
28
                    'countries' => [$country],
29
                    'name' => $value($node, 'CcyNm'),
30
                    'id' => $value($node, 'CcyNbr'),
31
                    'units' => $value($node, 'CcyMnrUnts'),
32
                ];
33
            }
34
            if(false === in_array($country, $data[$code]['countries'], true)) {
35
                $data[$code]['countries'][] = $country;
36
            }
37
        }
38
39
        return $data;
40
    }
41
}
42