/** * @dataProvider getTypeNames() * * @param string $typeName * @param string $category * @return void */ public function testTypeCategorization($typeName, $category) { switch ($category) { case 'scalar': self::assertTrue($this->fixture->isScalarType($typeName)); self::assertFalse($this->fixture->isArray($typeName)); self::assertFalse($this->fixture->isMixed($typeName)); break; case 'class': self::assertfalse($this->fixture->isScalarType($typeName)); self::assertFalse($this->fixture->isArray($typeName)); self::assertFalse($this->fixture->isMixed($typeName)); break; case 'array': self::assertFalse($this->fixture->isScalarType($typeName)); self::assertTrue($this->fixture->isArray($typeName)); self::assertFalse($this->fixture->isMixed($typeName)); break; case 'mixed': self::assertFalse($this->fixture->isScalarType($typeName)); self::assertFalse($this->fixture->isArray($typeName)); self::assertTrue($this->fixture->isMixed($typeName)); break; } }
/** * Creates a type object for given type name * @param string|ReflectionClass $typeName * @return ezcReflectionType * @todo ArrayAccess stuff, how to handle? has to be implemented */ public function getType($typeName) { if ($typeName instanceof ReflectionClass) { return new ezcReflectionObjectType($typeName); } $typeName = trim($typeName); if (empty($typeName)) { return null; } elseif ($this->mapper->isScalarType($typeName) or $this->mapper->isSpecialType($typeName)) { return new ezcReflectionPrimitiveType($typeName); } elseif ($this->mapper->isArray($typeName)) { return new ezcReflectionArrayType($typeName); } elseif ($this->mapper->isMixed($typeName)) { return new ezcReflectionMixedType($typeName); } else { // otherwhise it has to be a class name return new ezcReflectionObjectType($typeName); } }