classMapBuilder = $class_map_builder; } /** * Remembers all encountered classes. * * @param Node $node Node. * * @return void */ public function enterNode(Node $node) { if ( $node instanceof ClassLike ) { $class_info = array(); if ( $node instanceof Class_ ) { $class_info['type'] = \kFactory::TYPE_CLASS; $class_info['modifiers'] = 0; if ( $node->isAbstract() ) { $class_info['modifiers'] |= \kFactory::MODIFIER_ABSTRACT; } if ( $node->isFinal() ) { $class_info['modifiers'] |= \kFactory::MODIFIER_FINAL; } $extends = array(); if ( $node->extends ) { $extends[] = (string)$node->extends; } if ( $node->implements ) { foreach ( $node->implements as $interface ) { $extends[] = (string)$interface; } } if ( $extends ) { $class_info['extends'] = $extends; } } elseif ( $node instanceof Interface_ ) { $class_info['type'] = \kFactory::TYPE_INTERFACE; if ( $node->extends ) { $extends = array(); foreach ( $node->extends as $interface ) { $extends[] = (string)$interface; } $class_info['extends'] = $extends; } } elseif ( $node instanceof Trait_ ) { $class_info['type'] = \kFactory::TYPE_TRAIT; } $this->classMapBuilder->addClass((string)$node->namespacedName, $class_info); } } }