BulkSearchResult   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 39
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 2
Bugs 0 Features 2
Metric Value
eloc 10
c 2
b 0
f 2
dl 0
loc 39
ccs 11
cts 11
cp 1
rs 10
wmc 6

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A fromArray() 0 11 4
A jsonSerialize() 0 4 1
1
<?php
2
3
namespace Level23\Dynadot\Dto;
4
5
final class BulkSearchResult implements DtoInterface
6
{
7
    /** @var array<BulkSearchDomainResult> */
8
    public array $domainResults;
9
10
    /**
11
     * @param array<BulkSearchDomainResult> $domainResults
12
     */
13 9
    private function __construct(array $domainResults)
14
    {
15 9
        $this->domainResults = $domainResults;
16
    }
17
18
    /**
19
     * Hydrate from Dynadot's response "Data" object.
20
     *
21
     * @param array<string,mixed> $data
22
     * @return self
23
     */
24 9
    public static function fromArray(array $data): self
25
    {
26 9
        $domainResults = [];
27
28 9
        if (isset($data['domain_result_list']) && is_array($data['domain_result_list'])) {
29 7
            foreach ($data['domain_result_list'] as $domainData) {
30 6
                $domainResults[] = BulkSearchDomainResult::fromArray($domainData);
31
            }
32
        }
33
34 9
        return new self($domainResults);
35
    }
36
37
    /**
38
     * @return array<string, mixed>
39
     */
40 1
    public function jsonSerialize(): array
41
    {
42 1
        return [
43 1
            'domain_result_list' => array_map(fn ($domain) => $domain->jsonSerialize(), $this->domainResults),
44 1
        ];
45
    }
46
}
47