// We don't keep the $ before the variable names $t->componentView = false; // We don't want a component view to be included $t->deploymentView = false; // We don't want a deployment view (artifacts+folders) $t->docblocks = true; // We want the parser to look into the class/file comments $t->setInput('test1.php.txt, test2.php.txt'); // We want only "test1.php.txt" and "test2.php.txt" $t->parse('testModel'); // The files are parsed, and a UML model named "testModel" is built // we retrieve an XMI implementation of an Exporter object, and set the model: $e = new PHP_UML_Output_Xmi_Exporter(); $e->setModel($t->getModel()); // we set the XMI version (2.1 being the default if not set) $e->setXmiVersion(1); // we set the encoding (iso-8859-1 being the default if not set): $e->setEncoding('UTF-8'); // and we export XMI to a file: $e->export('test_example2.xmi'); // we can also print the serialized XMI by retrieving an XmiDocument from the exporter object: echo htmlentities($e->getXmiDocument()->dump()); /** * Example 3 : Example with a whole directory of PHP files to parse. We just want to * generate the API documentation in HTML. */ $t = new PHP_UML(); $t->setMatchPatterns(array('*.php', '*.txt')); // We want to parse every file with an extension "php" or "txt" $t->setIgnorePatterns('.svn'); // We want all directories to be scanned, except the ".svn"
/** * Rebuilds the set of original objects (stored in data-providers). * You should not need to run it. If you do so, run it with a * trusted version of UML. */ public static function rebuildExpectedParsePhp() { foreach (new DirectoryIterator(self::SUITE_DIR) as $file) { if (!$file->isDot() && !$file->isDir()) { $filename = $file->getFilename(); if (substr($filename, -4) == '.php') { $uml = self::getPhpUmlObject(); $uml->parseFile(self::SUITE_DIR . $filename); $str = serialize($uml->getModel()); $ptr = fopen(self::SUITE_DIR . self::PROVIDERS_DIR . $filename . '.obj', 'wb'); fwrite($ptr, $str); fclose($ptr); } } } // Global check (the two XMI files) $uml = self::getPhpUmlObject(); $uml->parseDirectory(self::SUITE_DIR); $e = new PHP_UML_Output_Xmi_Exporter(); $e->setDeploymentView(true); $e->setComponentView(false); $e->setStereotypes(true); $e->setXmiVersion(1); $e->export(self::SUITE_DIR . self::PROVIDERS_DIR . 'global1.xmi'); $e->setXmiVersion(2); $e->export(self::SUITE_DIR . self::PROVIDERS_DIR . 'global2.xmi'); // used by UmlParserTest::providerModelGlobal(): $str = serialize($uml->getModel()); $ptr = fopen(self::SUITE_DIR . self::PROVIDERS_DIR . 'global.obj', 'wb'); fwrite($ptr, $str); fclose($ptr); }
<?php require_once 'PHP/UML.php'; $importer = new PHP_UML_Input_PHP_FileScanner(); $importer->setDirectories(array('./app/models', './app/controllers', './app/repositories', './app/repositories/interfaces')); $importer->import(); $exporter = new PHP_UML_Output_Xmi_Exporter(); $exporter->setModel($importer->getModel()); $exporter->setXmiVersion(1); $exporter->setEncoding('utf-8'); $exporter->setDeploymentView(true); $exporter->setComponentView(true); $exporter->export('./uml');