Example #1
0
 /**
  * Creates a {@see Type} from a PHPDoc type.
  *
  * @return Type
  */
 public function getTypes(DocType $varType)
 {
     $types = array();
     $nullable = false;
     if (!$varType instanceof Compound) {
         if ($varType instanceof Null_) {
             $nullable = true;
         }
         $type = $this->createType((string) $varType, $nullable);
         if (null !== $type) {
             $types[] = $type;
         }
         return $types;
     }
     $varTypes = array();
     for ($typeIndex = 0; $varType->has($typeIndex); ++$typeIndex) {
         $varTypes[] = (string) $varType->get($typeIndex);
     }
     // If null is present, all types are nullable
     $nullKey = array_search(Type::BUILTIN_TYPE_NULL, $varTypes);
     $nullable = false !== $nullKey;
     // Remove the null type from the type if other types are defined
     if ($nullable && count($varTypes) > 1) {
         unset($varTypes[$nullKey]);
     }
     foreach ($varTypes as $varType) {
         $type = $this->createType($varType, $nullable);
         if (null !== $type) {
             $types[] = $type;
         }
     }
     return $types;
 }