'Default', self::FrontPage => 'Front Page', }; } public function route(): string { return match($this) { self::Default => 'Default', self::FrontPage => 'Front Page', }; } public function handlerClass(): string { return match($this) { self::Default => '', self::FrontPage => '', }; } public function formClass(): string { return match($this) { self::Default => '', self::FrontPage => '', }; } public static function selectOptions(): array { $options = []; foreach (self::cases() as $case) { $options[$case->value] = $case->label(); } return $options; } public static function isValid(string $layout): bool { foreach (self::cases() as $case) { if ($case->value === $layout) { return true; } } return false; } }