1<?php declare(strict_types=1); 2 3namespace PhpParser\Node\Stmt; 4 5use PhpParser\Node; 6 7class Interface_ extends ClassLike { 8 /** @var Node\Name[] Extended interfaces */ 9 public array $extends; 10 11 /** 12 * Constructs a class node. 13 * 14 * @param string|Node\Identifier $name Name 15 * @param array{ 16 * extends?: Node\Name[], 17 * stmts?: Node\Stmt[], 18 * attrGroups?: Node\AttributeGroup[], 19 * } $subNodes Array of the following optional subnodes: 20 * 'extends' => array(): Name of extended interfaces 21 * 'stmts' => array(): Statements 22 * 'attrGroups' => array(): PHP attribute groups 23 * @param array<string, mixed> $attributes Additional attributes 24 */ 25 public function __construct($name, array $subNodes = [], array $attributes = []) { 26 $this->attributes = $attributes; 27 $this->name = \is_string($name) ? new Node\Identifier($name) : $name; 28 $this->extends = $subNodes['extends'] ?? []; 29 $this->stmts = $subNodes['stmts'] ?? []; 30 $this->attrGroups = $subNodes['attrGroups'] ?? []; 31 } 32 33 public function getSubNodeNames(): array { 34 return ['attrGroups', 'name', 'extends', 'stmts']; 35 } 36 37 public function getType(): string { 38 return 'Stmt_Interface'; 39 } 40} 41