. */ namespace App\DataTables\Column; use Omines\DataTablesBundle\Column\AbstractColumn; use Symfony\Component\OptionsResolver\OptionsResolver; use UnitEnum; /** * @template T of UnitEnum */ class EnumColumn extends AbstractColumn { /** * @phpstan-return T */ public function normalize($value): UnitEnum { if (is_a($value, $this->getEnumClass())) { return $value; } //@phpstan-ignore-next-line return ($this->getEnumClass())::from($value); } protected function configureOptions(OptionsResolver $resolver) { parent::configureOptions($resolver); $resolver->setRequired('class'); $resolver->setAllowedTypes('class', 'string'); $resolver->addAllowedValues('class', enum_exists(...)); return $this; } /** * @return class-string */ public function getEnumClass(): string { return $this->options['class']; } }