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