1: <?php declare(strict_types=1);
2:
3: namespace PhpParser\Node\Stmt;
4:
5: use PhpParser\Node\Stmt;
6: use PhpParser\Node\UseItem;
7:
8: class Use_ extends Stmt {
9: /**
10: * Unknown type. Both Stmt\Use_ / Stmt\GroupUse and Stmt\UseUse have a $type property, one of them will always be
11: * TYPE_UNKNOWN while the other has one of the three other possible types. For normal use statements the type on the
12: * Stmt\UseUse is unknown. It's only the other way around for mixed group use declarations.
13: */
14: public const TYPE_UNKNOWN = 0;
15: /** Class or namespace import */
16: public const TYPE_NORMAL = 1;
17: /** Function import */
18: public const TYPE_FUNCTION = 2;
19: /** Constant import */
20: public const TYPE_CONSTANT = 3;
21:
22: /** @var self::TYPE_* Type of alias */
23: public int $type;
24: /** @var UseItem[] Aliases */
25: public array $uses;
26:
27: /**
28: * Constructs an alias (use) list node.
29: *
30: * @param UseItem[] $uses Aliases
31: * @param Stmt\Use_::TYPE_* $type Type of alias
32: * @param array<string, mixed> $attributes Additional attributes
33: */
34: public function __construct(array $uses, int $type = self::TYPE_NORMAL, array $attributes = []) {
35: $this->attributes = $attributes;
36: $this->type = $type;
37: $this->uses = $uses;
38: }
39:
40: public function getSubNodeNames(): array {
41: return ['type', 'uses'];
42: }
43:
44: public function getType(): string {
45: return 'Stmt_Use';
46: }
47: }
48: