PHP_UML
is structured in 4 packages:
PHP_UML
) and some utility classes
Input
package, where the PHP and XMI parser reside (they are the Importer
objects).
Metamodel
package, which contains the data structures that PHP_UML
is using to modelize the code parsed
Output
package, which contains all the objects (called Exporter
) to transform the UML model stored into memory into an output format (like XMI, HTML, or PHP)
If the default settings suit your needs, the only single class you need to know about is PHP_UML
.
For more advanced operations, you must use the Importer
and Exporter
hierarchies of objects,
whose roles, respectively, are to import
data into the UML model, and export data out from the UML model.
Parsing of a single file test.php
, and generation of its XMI file:
<?php
require_once 'PHP/UML.php';
$uml = new PHP_UML();
$uml->setInput('test.php');
$uml->parse('foo'); // parses, and sets the name of the root package
$uml->export('xmi', 'test.xmi'); // first param is the format (html, php, htmlnew or xmi), second param is the output folder
?>
Parsing of two directories, ignoring the CSV
folders, and generation of HTML documentation
<?php
require_once 'PHP/UML.php';
$uml = new PHP_UML();
$uml->setInput(array('C:\Inetpub\foo', 'C:\Inetpub\libraries'));
$uml->parse();
$uml->export('html', 'C:\Inetpub\api');
?>
Import of an XMI file, and generation of PHP code templates
<?php
require_once 'PHP/UML.php';
$uml = new PHP_UML();
$uml->setInput('foo.xmi');
$uml->setImporter(new PHP_UML_Input_XMI_FileScanner()); // by default, PHP_UML uses a PHP_UML_Input_PHP_FileScanner
$uml->parse();
$exporter = new PHP_UML_Output_Php_Exporter();
$exporter->setModel($uml->getModel());
$exporter->export('./');
?>
Parsing of a PHP directory, followed by an XMI generation, without relying on a PHP_UML object
<?php
require_once 'PHP/UML.php';
$importer = new PHP_UML_Input_PHP_FileScanner();
$importer->setDirectories(array('somewhere/'));
$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('somewhere/else/');
?>
Note how the model is transfered from the importer object to the exporter object, with the
methods getModel()
and setModel()
.
You can use the factory method PHP_UML_Output_Exporter::getInstance($format)
to get an exporter object given a format name,
instead of instantiating the objects by yourself.