svn: /pear/peardoc/trunk/en/package/php/php-uml/ api.xml command-line.xml extension.xml intro.xml
[email protected] (Baptiste Autin) Tue, 20 Sep 2011 01:50:04 +0000
| Newsgroups | php.pear.doc |
|---|---|
| Message-ID | <[email protected]> |
baptiste750 Tue, 20 Sep 2011 01:50:04 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=317034
Log:
* updated the documentation to reflect the API changes of the next release of PHP_UML (1.6.0)
Changed paths:
U pear/peardoc/trunk/en/package/php/php-uml/api.xml
U pear/peardoc/trunk/en/package/php/php-uml/command-line.xml
U pear/peardoc/trunk/en/package/php/php-uml/extension.xml
U pear/peardoc/trunk/en/package/php/php-uml/intro.xml
svn-diffs-317034.txt
(text/x-diff, 10.1 KB)
Modified: pear/peardoc/trunk/en/package/php/php-uml/api.xml
===================================================================
--- pear/peardoc/trunk/en/package/php/php-uml/api.xml 2011-09-20 00:48:53 UTC (rev 317033)
+++ pear/peardoc/trunk/en/package/php/php-uml/api.xml 2011-09-20 01:50:04 UTC (rev 317034)
@@ -16,7 +16,7 @@
</listitem>
<listitem>
<simpara>
- The <literal>Input</literal> package, where the PHP parser resides
+ The <literal>Input</literal> package, where the PHP and XMI parser reside (they are the <literal>Importer</literal> objects).
</simpara>
</listitem>
<listitem>
@@ -26,14 +26,16 @@
</listitem>
<listitem>
<simpara>
- The <literal>Output</literal> package, which contains all the stuff to transform a metamodel stored into memory into an output format (like XMI, HTML, or PHP)
+ The <literal>Output</literal> package, which contains all the objects (called <literal>Exporter</literal>) to transform the UML model stored into memory into an output format (like XMI, HTML, or PHP)
</simpara>
</listitem>
</itemizedlist>
</para>
<para>
- Unless you want to develop your own output format, the only single class you need to know about is <literal>PHP_UML</literal>.
- Since the first release of PHP_UML, the API of that class has changed, and you might find several methods doing more or less the same job.
+ If the default settings suit your needs, the only single class you need to know about is <literal>PHP_UML</literal>.
+ For more advanced operations, you must use the <literal>Importer</literal> and <literal>Exporter</literal> hierarchies of objects,
+ whose roles, respectively, are to import
+ data into the UML model, and export data out from the UML model.
</para>
</refsection>
@@ -48,9 +50,8 @@
$uml = new PHP_UML();
$uml->setInput('test.php');
-$uml->parse('foo'); // parses, and sets the name of the root package
-$uml->generateXMI(1); // generates XMI in version 1
-$uml->saveXMI('test.xmi');
+$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
?>
]]>
</programlisting>
@@ -79,13 +80,47 @@
<?php
require_once 'PHP/UML.php';
-$uml = new PHP_UML();
-$uml->xmiExporter->readXMIFile('foo.xmi');
-$uml->export('php', 'C:\Inetpub\foo');
+$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('./');
?>
]]>
</programlisting>
</example>
+
+ <example><info><title>Parsing of a PHP directory, followed by an XMI generation, without relying on a PHP_UML object</title></info>
+ <programlisting role="php">
+<![CDATA[
+<?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/');
+?>
+]]>
+ </programlisting>
+ </example>
+ <para>Note how the model is transfered from the importer object to the exporter object, with the
+ methods <literal>getModel()</literal> and <literal>setModel()</literal>.</para>
+ <para>You can use the factory method <literal>PHP_UML_Output_Exporter::getInstance($format)</literal> to get an exporter object given a format name,
+ instead of instantiating the objects by yourself.</para>
</refsection>
</refentry>
Modified: pear/peardoc/trunk/en/package/php/php-uml/command-line.xml
===================================================================
--- pear/peardoc/trunk/en/package/php/php-uml/command-line.xml 2011-09-20 00:48:53 UTC (rev 317033)
+++ pear/peardoc/trunk/en/package/php/php-uml/command-line.xml 2011-09-20 01:50:04 UTC (rev 317034)
@@ -13,7 +13,21 @@
<refsection><info><title>Arguments</title></info>
- <para>To specify the PHP files/directories to scan, pass them as main arguments:
+ <para>PHP_UML converts data into another kind of data. This can be summarized with:
+ <programlisting role="text">
+ <![CDATA[
+$ phpuml [INPUT] -o [OUTPUT LOCATION] -f [OUTPUT FORMAT]
+ ]]>
+ </programlisting>
+ <itemizedlist>
+ <listitem>
+ <simpara>[INPUT] can be PHP files, or XMI files.</simpara>
+ <simpara>[OUTPUT FORMAT] can be PHP files, XMI files, or HTML files.</simpara>
+ </listitem>
+ </itemizedlist>
+ </para>
+
+ <para>In other words, to specify the files/directories to scan, pass them as main arguments:
<programlisting role="text">
<![CDATA[
$ phpuml /var/www/foo
@@ -92,6 +106,8 @@
]]>
</programlisting>
This will read the XMI code contained in <filename>myFile.xmi</filename>, and generate the PHP code templates in <filename>/var/tmp/</filename>.
+ Note that with the command line tool, you cannot both read an XMI file and parse PHP files: you will have to use the API if you need to build
+ a UML model by merging inputs from XMI and PHP simultaneously.
</para>
</example>
Modified: pear/peardoc/trunk/en/package/php/php-uml/extension.xml
===================================================================
--- pear/peardoc/trunk/en/package/php/php-uml/extension.xml 2011-09-20 00:48:53 UTC (rev 317033)
+++ pear/peardoc/trunk/en/package/php/php-uml/extension.xml 2011-09-20 01:50:04 UTC (rev 317034)
@@ -7,24 +7,26 @@
<refsection><info><title>Extension</title></info>
<para>
- <classname>PHP_UML</classname> is designed with evolution in mind. By choosing XMI as the pivot format for representing the program's structure (namespaces, classes, functions...), PHP_UML can not only interface with design tools, it
- can also produce other output formats, via XSL transformations (this is how the format "html" is generated).
+ As we said in the
+ <link linkend="package.php.php-uml.command-line">Command Line</link> section,
+ <classname>PHP_UML</classname> converts programming data from one format to another format. Between
+ the two, it builds a UML model.
</para>
+
+ <para>At the current moment, PHP_UML can read XMI and PHP, and can generate XMI, PHP and HTML.</para>
+
<para>
- If you only need to customize a bit the look and feel of the HTML doc, just modify the stylesheet (in <filename>/UML/Output/html/resources/style.css</filename>).
+ If you want to write your own input format, you
+ can program your own implementation
+ of <literal>PHP_UML_Input_ImporterFileScanner</literal>.
</para>
- <para>But if you need deeper changes, you will have to create your own XSL transformation.
- For that, start with a new folder under <filename>/UML/Output/</filename>, and put a <filename>main.xsl</filename> file inside (you can copy the one
- in <filename>/Output/html/</filename>). Write all your XSLT stuff in <filename>main.xsl</filename>, or split it among multiple template files (that's
- how PHP_UML does). Then run the method <literal>export("newFormat", ".")</literal>, by passing the name of your transformation as the first parameter.
- </para>
+
<para>
- Instead of transforming XMI code, another way to create additional output formats is to program a process that exploits the metamodel
- that the parser has built.
- This is how the exportation formats <literal>htmlnew</literal> and <literal>xmi</literal> work. If you want to write your own format, you
- will have to program your own implementation
- class of PHP_UML_Output_ExporterAPI, and put it into a new folder, under the folder Output (beside the folders HtmlNew and Xmi).
+ If you want to write your own output format, you
+ can program your own implementation
+ of <literal>PHP_UML_Output_Exporter</literal> (either by traversing the model, like the "HtmlNew" implementation does, either by XSLT applied on XMI, like the implementation "Html" does).
</para>
+
<para>
For a better understanding of the program's guts, see its class diagram, available in the docs folder (PHP_UML_simplified_class_diagram.png).
</para>
Modified: pear/peardoc/trunk/en/package/php/php-uml/intro.xml
===================================================================
--- pear/peardoc/trunk/en/package/php/php-uml/intro.xml 2011-09-20 00:48:53 UTC (rev 317033)
+++ pear/peardoc/trunk/en/package/php/php-uml/intro.xml 2011-09-20 01:50:04 UTC (rev 317034)
@@ -7,10 +7,12 @@
<refsection><info><title>Description</title></info>
<para>
+ <classname>PHP_UML</classname> converts programming data from one format (PHP or XMI) to another (PHP, XMI or HTML).
+ In other words,
<classname>PHP_UML</classname> is a reverse-engineering tool, and an API documentation tool.
</para>
<para>
- It can parse PHP files, and immediately generate:
+ It can parse PHP files, and generate:
</para>
<para>
<itemizedlist>
@@ -38,11 +40,11 @@
<refsection><info><title>Features</title></info>
<para>
- <classname>PHP_UML</classname> is able to parse the following PHP elements: <emphasis role="bold">namespaces</emphasis>, classes, interfaces, properties, and functions. It can also retrieve information from the inline comments, via the annotations: <literal>@package</literal>, <literal>@var</literal>, <literal>@param</literal>
+ <classname>PHP_UML</classname> is able to parse the following PHP elements: namespaces, classes, interfaces, properties, and functions. It can also retrieve information from the inline comments, via the annotations: <literal>@package</literal>, <literal>@var</literal>, <literal>@param</literal>
<itemizedlist>
<listitem>
<simpara>
- <literal>@param</literal> and <literal>@var</literal> learn PHP_UML about the expected types of a parameter or a property.
+ <literal>@param</literal> and <literal>@var</literal> learn PHP_UML about the expected types of a parameter or a property (when type hinting is not present).
</simpara>
</listitem>
<listitem>