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