Index: branches/5.3.x/core/kernel/utility/ClassDiscovery/ClassDetector.php =================================================================== diff -u -N -r16156 -r16163 --- branches/5.3.x/core/kernel/utility/ClassDiscovery/ClassDetector.php (.../ClassDetector.php) (revision 16156) +++ branches/5.3.x/core/kernel/utility/ClassDiscovery/ClassDetector.php (.../ClassDetector.php) (revision 16163) @@ -16,7 +16,10 @@ use PhpParser\Node; +use PhpParser\Node\Stmt\Class_; use PhpParser\Node\Stmt\ClassLike; +use PhpParser\Node\Stmt\Interface_; +use PhpParser\Node\Stmt\Trait_; use PhpParser\NodeVisitorAbstract; defined('FULL_PATH') or die('restricted access!'); @@ -58,7 +61,54 @@ public function enterNode(Node $node) { if ( $node instanceof ClassLike ) { - $this->classMapBuilder->addClass((string)$node->namespacedName); + $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); } }