. // }}} namespace App\Util\HTML; use function App\Core\I18n\_m; use App\Util\HTML; use Twig\Markup; class Heading extends HTML { private string $heading_type = 'h1'; private string $heading_text; private array $classes = []; public function __construct(int $level, array $classes, string $text) { $this->setHeadingText($text); foreach ($classes as $class) { $this->addClass($class); } if ($level >= 1 && $level <= 6) { $this->heading_type = 'h' . $level; } } public function addClass(string $c): self { if (!\in_array($c, $this->classes, true)) { $this->classes[] = $c; } return $this; } public function getHtml(): Markup { return new Markup($this->__toString(), 'UTF-8'); } public function __toString() { return $this::html([$this->getHeadingType() => ['attrs' => ['class' => !empty($this->getClasses()) ? implode(' ', $this->getClasses()) : ''], _m($this->getHeadingText())]]); } public function getHeadingType(): string { return $this->heading_type; } public function setHeadingType(string $value): static { $this->heading_type = $value; return $this; } public function getClasses(): array { return $this->classes; } public function getHeadingText(): string { return $this->heading_text; } public function setHeadingText(string $value): static { $this->heading_text = $value; return $this; } }