public function &updateClassDetails(&$File, &$Component, &$SourceAnalyzer) { $MethodInstance = new Method(array('init' => false)); $MethodInstance->setConnection($this->getConnection()); $MethodInstance->init(); $parsed_details = $SourceAnalyzer->getParsedArray($File->body); $available_classes = empty($parsed_details['classes']) ? array() : array_keys($parsed_details['classes']); if (empty($available_classes)) { return $available_classes; } $Classes = array(); foreach ($available_classes as $class_name) { $extends = !empty($parsed_details['classes'][$class_name]['extends']) ? $parsed_details['classes'][$class_name]['extends'] : false; if ($extends) { $SourceAnalyzer->log('Looking for parent class: ' . $extends); $ParentClass = $this->_addOrUpdateClassDetails($extends, $File, $Component, $SourceAnalyzer, array(), true); } $Class = $this->_addOrUpdateClassDetails($class_name, $File, $Component, $SourceAnalyzer, $parsed_details['classes'][$class_name]); if (!empty($ParentClass)) { $SourceAnalyzer->log('Setting ' . $extends . ' as the parent of ' . $class_name); $ParentClass->tree->addChild($Class); $ParentClass->save(); } $Class->methods = array(); if (!empty($parsed_details['classes'][$class_name]['methods'])) { foreach ($parsed_details['classes'][$class_name]['methods'] as $method_name => $method_details) { $Class->methods[] = $MethodInstance->updateMethodDetails($Class, $method_name, $method_details, $SourceAnalyzer); } } $Classes[] = $Class; } return $Classes; }