xref: /PHP-Parser/lib/PhpParser/Node/Stmt/Trait_.php (revision f98341f6)
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