$config) { $this->fields[$name] = match ($config['type']) { 'upload', 'image', 'gallery' => new UploadField($name, $config), 'checkbox', 'radio', 'select', 'set' => new OptionsField($name, $config), 'repeater' => new RepeaterField($name, $config), 'tagList' => new TagListField($name, $config), 'group' => new GroupedField($name, $config), 'selector', 'taxonomy', 'user', 'post' => new SelectorField($name, $config), default => new Field($name, $config), }; } } public function getFields():array { return $this->fields; } }