1<?php declare(strict_types=1); 2 3namespace PhpParser\Node; 4 5use PhpParser\Node; 6use PhpParser\NodeAbstract; 7use PhpParser\Node\Stmt\Use_; 8 9class UseItem extends NodeAbstract { 10 /** 11 * @var Use_::TYPE_* One of the Stmt\Use_::TYPE_* constants. Will only differ from TYPE_UNKNOWN for mixed group uses 12 */ 13 public int $type; 14 /** @var Node\Name Namespace, class, function or constant to alias */ 15 public Name $name; 16 /** @var Identifier|null Alias */ 17 public ?Identifier $alias; 18 19 /** 20 * Constructs an alias (use) item node. 21 * 22 * @param Node\Name $name Namespace/Class to alias 23 * @param null|string|Identifier $alias Alias 24 * @param Use_::TYPE_* $type Type of the use element (for mixed group use only) 25 * @param array<string, mixed> $attributes Additional attributes 26 */ 27 public function __construct(Node\Name $name, $alias = null, int $type = Use_::TYPE_UNKNOWN, array $attributes = []) { 28 $this->attributes = $attributes; 29 $this->type = $type; 30 $this->name = $name; 31 $this->alias = \is_string($alias) ? new Identifier($alias) : $alias; 32 } 33 34 public function getSubNodeNames(): array { 35 return ['type', 'name', 'alias']; 36 } 37 38 /** 39 * Get alias. If not explicitly given this is the last component of the used name. 40 */ 41 public function getAlias(): Identifier { 42 if (null !== $this->alias) { 43 return $this->alias; 44 } 45 46 return new Identifier($this->name->getLast()); 47 } 48 49 public function getType(): string { 50 return 'UseItem'; 51 } 52} 53 54// @deprecated compatibility alias 55class_alias(UseItem::class, Stmt\UseUse::class); 56