1<?php declare(strict_types=1);
2
3namespace PhpParser\Builder;
4
5use PhpParser;
6use PhpParser\BuilderHelpers;
7
8abstract class Declaration implements PhpParser\Builder {
9    /** @var array<string, mixed> */
10    protected array $attributes = [];
11
12    /**
13     * Adds a statement.
14     *
15     * @param PhpParser\Node\Stmt|PhpParser\Builder $stmt The statement to add
16     *
17     * @return $this The builder instance (for fluid interface)
18     */
19    abstract public function addStmt($stmt);
20
21    /**
22     * Adds multiple statements.
23     *
24     * @param (PhpParser\Node\Stmt|PhpParser\Builder)[] $stmts The statements to add
25     *
26     * @return $this The builder instance (for fluid interface)
27     */
28    public function addStmts(array $stmts) {
29        foreach ($stmts as $stmt) {
30            $this->addStmt($stmt);
31        }
32
33        return $this;
34    }
35
36    /**
37     * Sets doc comment for the declaration.
38     *
39     * @param PhpParser\Comment\Doc|string $docComment Doc comment to set
40     *
41     * @return $this The builder instance (for fluid interface)
42     */
43    public function setDocComment($docComment) {
44        $this->attributes['comments'] = [
45            BuilderHelpers::normalizeDocComment($docComment)
46        ];
47
48        return $this;
49    }
50}
51