예제 #1
0
 /**
  * @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);
 }
예제 #2
0
 public function testItReturnsClassTypeNameForEnumClass()
 {
     $this->assertEquals('__Enum__\\' . FooBar::class, $this->sut->getTypeClassName(FooBar::class));
 }