/** * @param type $class * @return \Nucleus\Annotation\IParsingResult */ public function parse($className) { $reflectionClass = new \ReflectionClass($className); $result = new ParsingResult($reflectionClass->getName()); $result->setClassAnnotations($this->reader->getClassAnnotations($reflectionClass)); foreach ($reflectionClass->getMethods() as $reflectionMethod) { $result->setMethodAnnotations($reflectionMethod->getName(), $this->reader->getMethodAnnotations($reflectionMethod)); } foreach ($reflectionClass->getMethods() as $reflectionMethod) { $result->setMethodAnnotations($reflectionMethod->getName(), $this->reader->getMethodAnnotations($reflectionMethod)); } foreach ($reflectionClass->getProperties() as $reflectionProperty) { $result->setPropertyAnnotations($reflectionProperty->getName(), $this->reader->getPropertyAnnotations($reflectionProperty)); } $parentClass = $reflectionClass->getParentClass(); if ($parentClass) { $parentResult = $this->parse($parentClass->getName()); $result->mergeParentClass($parentResult); } $interfaceClasses = $reflectionClass->getInterfaces(); foreach ($interfaceClasses as $interfaceClass) { /* @var $interfaceClass \ReflectionClass */ $interfaceResult = $this->parse($interfaceClass->getName()); $result->mergeParentClass($interfaceResult); } return $result; }