id = $id; $this->type = $type; $this->label = $label; $this->required = $required; $this->serial = base64_encode(random_bytes(9)); } private function getUniqueName(): string { return $this->id . '__' . $this->serial; } public function addAsHtml(\SimpleXMLElement $parent): void { $label = $parent->addChild('label', L($this->label)); $label->addAttribute('for', 'input-' . $this->getUniqueName()); $input = $parent->addChild('input'); $input->addAttribute('type', $this->type); $input->addAttribute('name', $this->getUniqueName()); $input->addAttribute('id', 'input-' . $this->getUniqueName()); if ($this->required) $input->addAttribute('required', ''); } }