/** * Provides the data for the "all at once" model check * * @return array */ public static function providerXMIGlobal() { $data = array(); $uml = self::getPhpUmlObject(); $uml->parseDirectory(self::SUITE_DIR); $e = new PHP_UML_Output_Xmi_Exporter(); $e->setModel($uml->getModel()); $e->setDeploymentView(true); $e->setComponentView(false); $e->setStereotypes(true); $e->setXmiVersion(1); // We are saving what was generated (for later manual check, if needed) $e->export('temp/new_global1.xmi'); // Then let's compare the content of global1.xmi, with the // XMI code we have just generated $data[] = array(file_get_contents(self::SUITE_DIR . self::PROVIDERS_DIR . 'global1.xmi'), $e->getXmiDocument()->dump(), 'XMI version 1'); // Same with XMI version 2: $e->setXmiVersion(2); //$e->generateXmi(); $e->export('temp/new_global2.xmi'); $data[] = array(file_get_contents(self::SUITE_DIR . self::PROVIDERS_DIR . 'global2.xmi'), $e->getXmiDocument()->dump(), 'XMI version 2'); return $data; }
// 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" $t->setInput('./'); // ... in the current directory $t->parse(); // Starts parsing $t->export('htmlnew', 'doc/'); // And the HTML API is exported into the folder "doc/"
/** * Generates output data by applying a transformation on the XMI stored in the * property $xmi * * @param string $outputDir Output folder * * @return DOMDocument A DOM document containing the result of the XSLT */ public function export($outputDir) { $xslFile = $this->getXslFilepath(); if (empty($this->xmiDocument)) { $temp = new PHP_UML_Output_Xmi_Exporter(); /* * Component views and deployment views don't mean anything * for output formats other than XMI. Yet, since ExporterXSL is * a subclass of ExportXMI, we must force these options to * false, otherwise they will appear in the output produced by * the XSL transformation: */ $temp->setComponentView(false); $temp->setDeploymentView(false); $temp->setModel($this->structure); $temp->generateXmi(); $this->xmiDocument = $temp->getXmiDocument(); } if (file_exists($xslFile)) { return $this->exportFromXml($outputDir, $xslFile, $this->xmiDocument->dump()); } else { throw new PHP_UML_Exception('Could not find the XSL template file. It must be named ' . self::STARTING_TPL . ', under Format/YourTemplate/'); } }