1<?php declare(strict_types=1);
2
3namespace PhpParser\Builder;
4
5use PhpParser;
6use PhpParser\BuilderHelpers;
7use PhpParser\Node;
8use PhpParser\Node\Stmt;
9
10class Namespace_ extends Declaration {
11    private ?Node\Name $name;
12    /** @var Stmt[] */
13    private array $stmts = [];
14
15    /**
16     * Creates a namespace builder.
17     *
18     * @param Node\Name|string|null $name Name of the namespace
19     */
20    public function __construct($name) {
21        $this->name = null !== $name ? BuilderHelpers::normalizeName($name) : null;
22    }
23
24    /**
25     * Adds a statement.
26     *
27     * @param Node|PhpParser\Builder $stmt The statement to add
28     *
29     * @return $this The builder instance (for fluid interface)
30     */
31    public function addStmt($stmt) {
32        $this->stmts[] = BuilderHelpers::normalizeStmt($stmt);
33
34        return $this;
35    }
36
37    /**
38     * Returns the built node.
39     *
40     * @return Stmt\Namespace_ The built node
41     */
42    public function getNode(): Node {
43        return new Stmt\Namespace_($this->name, $this->stmts, $this->attributes);
44    }
45}
46