InitialForm::class, 'default_form' => DefaultForm::class, 'demo_form' => DemoForm::class, ]; public function getFormEntityForTemplate(string $templateId): FormEntity { if (!isset($this->templates[$templateId])) { throw UnexpectedValueException::create() ->withErrors(["Template with id $templateId doesn't exist."]); } /** @var Template $template */ $template = new $this->templates[$templateId](); return $template->toFormEntity(); } /** * @param string[] $templateIds * @return FormEntity[] associative array with template ids as keys */ public function getFormsForTemplates(array $templateIds): array { $result = []; foreach ($templateIds as $templateId) { $result[$templateId] = $this->getFormEntityForTemplate($templateId); } return $result; } }