/** * @param string $typeName * @param string $enumClass * @throws EnumException * @throws \Doctrine\DBAL\DBALException */ public function addType($typeName, $enumClass) { if ($this->hasType($typeName)) { return; } if (!preg_match('/^[A-Za-z0-9_]+$/', $typeName)) { throw new EnumException('Enum type name contains invalid characters. Only letters, numbers and underscores are allowed.'); } if (!is_subclass_of($enumClass, Enum::class)) { throw new EnumException("{$enumClass} is not a valid enum class."); } $typeClass = $this->typeGenerator->getTypeClassName($enumClass); if (!$this->typeStorage->exists($typeClass)) { $result = $this->typeGenerator->generate($typeName, $enumClass); $this->typeStorage->save($result->getClassName(), $result->getContent()); } Type::addType($typeName, $typeClass); }
public function testItReturnsClassTypeNameForEnumClass() { $this->assertEquals('__Enum__\\' . FooBar::class, $this->sut->getTypeClassName(FooBar::class)); }