public function readQueryResult($class) { $reflClass = new \ReflectionClass($class); $classAnnotations = $this->reader->getClassAnnotations($reflClass); $isQueryResult = false; foreach ($classAnnotations as $classAnnotation) { if ($classAnnotation instanceof QueryResult) { $isQueryResult = true; } } if (!$isQueryResult) { throw new \RuntimeException(sprintf('The class "%s" is not a valid QueryResult entity', $class)); } $queryResultMapper = new QueryResultMapper($class); foreach ($reflClass->getProperties() as $property) { foreach ($this->reader->getPropertyAnnotations($property) as $propertyAnnotation) { if ($propertyAnnotation instanceof MappedResult) { $queryResultMapper->addField(new ResultField($property->getName(), $propertyAnnotation->type, $propertyAnnotation->target)); } } } return $queryResultMapper; }