Issues (158)

src/Node/EnumNode.php (1 issue)

Labels
Severity
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Jerowork\GraphqlAttributeSchema\Node;
6
7
use BackedEnum;
8
use Jerowork\GraphqlAttributeSchema\Node\Child\EnumValueNode;
9
10
/**
11
 * @phpstan-import-type EnumValueNodePayload from EnumValueNode
12
 *
13
 * @phpstan-type EnumNodePayload array{
14
 *     className: class-string<BackedEnum>,
15
 *     name: string,
16
 *     description: null|string,
17
 *     cases: list<EnumValueNodePayload>
18
 * }
19
 *
20
 * @internal
21
 */
22
final readonly class EnumNode implements Node
0 ignored issues
show
A parse error occurred: Syntax error, unexpected T_READONLY, expecting T_CLASS on line 22 at column 6
Loading history...
23
{
24
    /**
25
     * @param class-string<BackedEnum> $className
26
     * @param list<EnumValueNode> $cases
27
     */
28 13
    public function __construct(
29
        public string $className,
30
        public string $name,
31
        public ?string $description,
32
        public array $cases,
33 13
    ) {}
34
35
    /**
36
     * @return class-string<BackedEnum>
37
     */
38 7
    public function getClassName(): string
39
    {
40 7
        return $this->className;
41
    }
42
43
    /**
44
     * @return EnumNodePayload
45
     */
46 1
    public function toArray(): array
47
    {
48 1
        return [
49 1
            'className' => $this->className,
50 1
            'name' => $this->name,
51 1
            'description' => $this->description,
52 1
            'cases' => array_map(fn($case) => $case->toArray(), $this->cases),
53 1
        ];
54
    }
55
56
    /**
57
     * @param EnumNodePayload $payload
58
     */
59 1
    public static function fromArray(array $payload): EnumNode
60
    {
61 1
        return new self(
62 1
            $payload['className'],
63 1
            $payload['name'],
64 1
            $payload['description'],
65 1
            array_map(fn($casePayload) => EnumValueNode::fromArray($casePayload), $payload['cases']),
66 1
        );
67
    }
68
}
69