1<?php declare(strict_types=1);
2
3namespace PhpParser\Node;
4
5use PhpParser\Node;
6use PhpParser\NodeAbstract;
7
8class PropertyItem extends NodeAbstract {
9    /** @var Node\VarLikeIdentifier Name */
10    public VarLikeIdentifier $name;
11    /** @var null|Node\Expr Default */
12    public ?Expr $default;
13
14    /**
15     * Constructs a class property item node.
16     *
17     * @param string|Node\VarLikeIdentifier $name Name
18     * @param null|Node\Expr $default Default value
19     * @param array<string, mixed> $attributes Additional attributes
20     */
21    public function __construct($name, ?Node\Expr $default = null, array $attributes = []) {
22        $this->attributes = $attributes;
23        $this->name = \is_string($name) ? new Node\VarLikeIdentifier($name) : $name;
24        $this->default = $default;
25    }
26
27    public function getSubNodeNames(): array {
28        return ['name', 'default'];
29    }
30
31    public function getType(): string {
32        return 'PropertyItem';
33    }
34}
35
36// @deprecated compatibility alias
37class_alias(PropertyItem::class, Stmt\PropertyProperty::class);
38