1: <?php declare(strict_types = 1);
2:
3: namespace PHPStan\PhpDocParser\Ast\ConstExpr;
4:
5: use PHPStan\PhpDocParser\Ast\NodeAttributes;
6: use function implode;
7:
8: class ConstExprArrayNode implements ConstExprNode
9: {
10:
11: use NodeAttributes;
12:
13: /** @var ConstExprArrayItemNode[] */
14: public array $items;
15:
16: /**
17: * @param ConstExprArrayItemNode[] $items
18: */
19: public function __construct(array $items)
20: {
21: $this->items = $items;
22: }
23:
24: public function __toString(): string
25: {
26: return '[' . implode(', ', $this->items) . ']';
27: }
28:
29: /**
30: * @param array<string, mixed> $properties
31: */
32: public static function __set_state(array $properties): self
33: {
34: $instance = new self($properties['items']);
35: if (isset($properties['attributes'])) {
36: foreach ($properties['attributes'] as $key => $value) {
37: $instance->setAttribute($key, $value);
38: }
39: }
40: return $instance;
41: }
42:
43: }
44: