Passed
Pull Request — master (#11)
by
unknown
02:34
created

DomainListResult::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 1
eloc 1
c 1
b 0
f 1
nc 1
nop 1
dl 0
loc 3
ccs 2
cts 2
cp 1
crap 1
rs 10
1
<?php
2
3
namespace Level23\Dynadot\Dto;
4
5
final class DomainListResult implements DtoInterface
6
{
7
    /** @var array<DomainInfo> */
8
    public array $domains;
9
10
    /**
11
     * @param array<DomainInfo> $domains
12
     */
13 5
    private function __construct(array $domains)
14
    {
15 5
        $this->domains = $domains;
16
    }
17
18
    /**
19
     * Hydrate from Dynadot's response "Data" object.
20
     *
21
     * @param array<string,mixed> $data
22
     * @return self
23
     */
24 5
    public static function fromArray(array $data): self
25
    {
26 5
        $domains = [];
27
28 5
        if (isset($data['domainInfo']) && is_array($data['domainInfo'])) {
29 4
            foreach ($data['domainInfo'] as $domainData) {
30 3
                $domains[] = DomainInfo::fromArray($domainData);
31
            }
32
        }
33
34 5
        return new self($domains);
35
    }
36
37
    /**
38
     * @return array<string, mixed>
39
     */
40 1
    public function jsonSerialize(): array
41
    {
42 1
        return [
43 1
            'domains' => array_map(fn ($domain) => $domain->jsonSerialize(), $this->domains),
44 1
        ];
45
    }
46
}
47