API
Principles
PHP_UML
is structured in 4 packages:
-
The host package, which contains the main class (
PHP_UML
) and some utility classes -
The
Input
package, where the PHP and XMI parser reside (they are theImporter
objects). -
The
Metamodel
package, which contains the data structures thatPHP_UML
is using to modelize the code parsed -
The
Output
package, which contains all the objects (calledExporter
) 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.
Examples
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.