public function parse(Class_ $node, Entity\FQN $fqn, $file) { $fqcn = new Entity\FQCN($node->name, $fqn); $classData = new Node\ClassData($fqcn, $file); if ($node->extends instanceof Name) { $classData->setParent($this->useParser->getFQCN($node->extends)); } foreach ($node->implements as $interfaceName) { $classData->addInterface($this->useParser->getFQCN($interfaceName)); } $classData->startLine = $node->getAttribute("startLine"); $this->parseDocComments($classData, $node->getAttribute("comments")); foreach ($node->stmts as $child) { if ($child instanceof ClassMethod) { $classData->addMethod($this->parseMethod($child)); } elseif ($child instanceof Property) { foreach ($child->props as $prop) { $classData->addProp($this->parseProperty($prop, $child->type, $child->getAttribute('comments'))); } } elseif ($child instanceof ClassConst) { foreach ($child->consts as $const) { $classData->addConst($const->name); } } } return $classData; }
protected function addExtend(ClassData $class, FQCN $parent) { $this->findClassChildren($parent); $this->extends[$parent->toString()][$class->fqcn->toString()] = $class; $parentClass = $this->findClassByFQCN($parent); if ($parentClass instanceof ClassData) { $class->setParent($parentClass); } }