1<?php declare(strict_types=1);
2
3namespace PhpParser\Node\Expr;
4
5use PhpParser\Node;
6use PhpParser\Node\Expr;
7use PhpParser\Node\Identifier;
8
9class NullsafePropertyFetch extends Expr {
10    /** @var Expr Variable holding object */
11    public Expr $var;
12    /** @var Identifier|Expr Property name */
13    public Node $name;
14
15    /**
16     * Constructs a nullsafe property fetch node.
17     *
18     * @param Expr $var Variable holding object
19     * @param string|Identifier|Expr $name Property name
20     * @param array<string, mixed> $attributes Additional attributes
21     */
22    public function __construct(Expr $var, $name, array $attributes = []) {
23        $this->attributes = $attributes;
24        $this->var = $var;
25        $this->name = \is_string($name) ? new Identifier($name) : $name;
26    }
27
28    public function getSubNodeNames(): array {
29        return ['var', 'name'];
30    }
31
32    public function getType(): string {
33        return 'Expr_NullsafePropertyFetch';
34    }
35}
36