xref: /PHP-Parser/lib/PhpParser/Node/Stmt/For_.php (revision 502b0909)
1<?php declare(strict_types=1);
2
3namespace PhpParser\Node\Stmt;
4
5use PhpParser\Node;
6
7class For_ extends Node\Stmt {
8    /** @var Node\Expr[] Init expressions */
9    public array $init;
10    /** @var Node\Expr[] Loop conditions */
11    public array $cond;
12    /** @var Node\Expr[] Loop expressions */
13    public array $loop;
14    /** @var Node\Stmt[] Statements */
15    public array $stmts;
16
17    /**
18     * Constructs a for loop node.
19     *
20     * @param array{
21     *     init?: Node\Expr[],
22     *     cond?: Node\Expr[],
23     *     loop?: Node\Expr[],
24     *     stmts?: Node\Stmt[],
25     * } $subNodes Array of the following optional subnodes:
26     *             'init'  => array(): Init expressions
27     *             'cond'  => array(): Loop conditions
28     *             'loop'  => array(): Loop expressions
29     *             'stmts' => array(): Statements
30     * @param array<string, mixed> $attributes Additional attributes
31     */
32    public function __construct(array $subNodes = [], array $attributes = []) {
33        $this->attributes = $attributes;
34        $this->init = $subNodes['init'] ?? [];
35        $this->cond = $subNodes['cond'] ?? [];
36        $this->loop = $subNodes['loop'] ?? [];
37        $this->stmts = $subNodes['stmts'] ?? [];
38    }
39
40    public function getSubNodeNames(): array {
41        return ['init', 'cond', 'loop', 'stmts'];
42    }
43
44    public function getType(): string {
45        return 'Stmt_For';
46    }
47}
48