$h->loadFile($_GET['file']); $source = $h->toArray(); /* what do we need to do ? */ if (!isset($_GET['show'])) { $show = ''; } else { $show = $_GET['show']; } print_layout(); switch ($show) { case 'main': print_op_array($asm['op_array']); break; case 'functions': if (is_array($asm['functions'][$_GET['name']])) { print_function($_GET['name'], $asm['functions'][$_GET['name']]); } break; case 'methods': if (isset($_GET['method']) && is_array($asm['classes'][$_GET['name']][$_GET['method']])) { print_method($_GET['method'], $asm['classes'][$_GET['name']][$_GET['method']]); } break; } /* {{{ convert_string */ function convert_string($string, $length) { if (strlen($string) > $length) { $string = substr($string, 0, $length - 4) . ' ...'; } return htmlspecialchars($string);
/** * Prints ReflectionClass in format of PHP code * @param classRef ReflectionClass object * @param tabs integer[optional] number of tabs for indentation */ function print_class($classRef, $tabs = 0) { global $processedClasses; $processedClasses[strtolower($classRef->getName())] = true; print "\n"; print_doccomment($classRef, $tabs); print_tabs($tabs); if ($classRef->isFinal()) { print "final "; } print $classRef->isInterface() ? "interface " : "class "; print clean_php_identifier($classRef->getName()) . " "; // print out parent class $parentClassRef = $classRef->getParentClass(); if ($parentClassRef) { print "extends {$parentClassRef->getName()} "; } // print out interfaces $interfacesRef = $classRef->getInterfaces(); if (count($interfacesRef) > 0) { print $classRef->isInterface() ? "extends " : "implements "; $i = 0; foreach ($interfacesRef as $interfaceRef) { if ($i++ > 0) { print ", "; } print "{$interfaceRef->getName()}"; } } print " {\n"; // process constants $constsRef = $classRef->getConstants(); if (count($constsRef) > 0) { print_class_constants($constsRef, $tabs + 1); print "\n"; } global $classesDoc; // process properties $propertiesRef = $classRef->getProperties(); if (count($propertiesRef) > 0) { foreach ($propertiesRef as $propertyRef) { print_property($propertyRef, $tabs + 1); $printedFields[$propertyRef->getName()] = true; } print "\n"; } $className = strtolower($classRef->getName()); if ($className == "DomDocument") { echo "DomDocument"; } global $fields_doc; if (@$fields_doc[$className]) { $fields = @$fields_doc[$className]; foreach ($fields as $field) { if (!$printedFields[$field['name']]) { //print doc here print "\n"; $doc = $field['doc']; if ($doc) { print_tabs($tabs + 1); print "/**\n"; print_tabs($tabs + 1); print " * " . newline_to_phpdoc($doc, $tabs + 1) . "\n"; print_tabs($tabs + 1); print " * @var " . $field['type'] . "\n"; if ($field['deprecated'] == true) { print_tabs($tabs + 1); print " * @deprecated " . "\n"; } print_Tabs($tabs + 1); // http://www.php.net/manual/en/class.domdocument.php#domdocument.props.actualencoding $refname = strtolower($classRef->getName()); $class_url = make_url("class." . $refname); $field_name = strtolower($field['name']); $field_url = $class_url . '#' . $className . ".props." . $field_name; print " * @link {$field_url}\n"; print_tabs($tabs + 1); print " */\n"; } print_tabs($tabs + 1); print implode(' ', array($field['modifier'])); print " "; print "\${$field['name']};\n"; } } } // process methods $methodsRef = $classRef->getMethods(); if (count($methodsRef) > 0) { foreach ($methodsRef as $methodRef) { print_function($methodRef, $classRef->isInterface(), $tabs + 1); } print "\n"; } print_tabs($tabs); print "}\n"; }