1<?php declare(strict_types=1); 2 3namespace PhpParser\Node\Expr; 4 5use PhpParser\Node; 6use PhpParser\Node\Arg; 7use PhpParser\Node\Expr; 8use PhpParser\Node\Identifier; 9use PhpParser\Node\VariadicPlaceholder; 10 11class NullsafeMethodCall extends CallLike { 12 /** @var Expr Variable holding object */ 13 public Expr $var; 14 /** @var Identifier|Expr Method name */ 15 public Node $name; 16 /** @var array<Arg|VariadicPlaceholder> Arguments */ 17 public array $args; 18 19 /** 20 * Constructs a nullsafe method call node. 21 * 22 * @param Expr $var Variable holding object 23 * @param string|Identifier|Expr $name Method name 24 * @param array<Arg|VariadicPlaceholder> $args Arguments 25 * @param array<string, mixed> $attributes Additional attributes 26 */ 27 public function __construct(Expr $var, $name, array $args = [], array $attributes = []) { 28 $this->attributes = $attributes; 29 $this->var = $var; 30 $this->name = \is_string($name) ? new Identifier($name) : $name; 31 $this->args = $args; 32 } 33 34 public function getSubNodeNames(): array { 35 return ['var', 'name', 'args']; 36 } 37 38 public function getType(): string { 39 return 'Expr_NullsafeMethodCall'; 40 } 41 42 public function getRawArgs(): array { 43 return $this->args; 44 } 45} 46