Command line interface

Command line interface – How to run PHP_UML from the command line?

Install

The executable phpuml relies on Console::CommandLine. If you have followed the normal PEAR installation process to install PHP_UML, that dependency should have been resolved, and you should be able to run phpuml directly from the command line.

Arguments

PHP_UML converts data into another kind of data. This can be summarized with:

$ phpuml [INPUT] -o [OUTPUT LOCATION] -f [OUTPUT FORMAT]
  • [INPUT] can be PHP files, or XMI files. [OUTPUT FORMAT] can be PHP files, XMI files, or HTML files.

In other words, to specify the files/directories to scan, pass them as main arguments:

$ phpuml /var/www/foo

Separate the different elements by a space:

$ phpuml /var/www/file1.php file2.php

By default, phpuml will recursively parse the specified files/folders, and will echo the XMI code on the screen (UML/XMI version 2).

Options

Renaming the UML model name

By default, the root package of a UML model is named default. To rename it, use the switch -n:

$ phpuml /var/www/foo -n MyProject

Saving to a file

To save the XMI data in a particular place, instead of printing it on the screen, use -o:

$ phpuml /var/www/foo -n MyProject -o /var/tmp/

This will parse /var/www/foo, and save the XMI data to /var/tmp/MyProject.xmi. Use the dot to save to the current directory: -o .

The option -o also accepts a file name, instead of a directory path.

Generating an API's documentation in HTML, or some PHP code

In addition to xmi, 3 output formats are also available: html, htmlnew, and php.

  • "htmlnew" is a full XHTML-compliant API documentation ("modern" look and feel). It has the particularity to reflect the procedural code, in addition to the object code. The global procedural functions and constants appear in the top package.
  • "html" is another HTML API documentation ("Javadoc" look and feel)
  • "php" is a PHP code generation (code skeletons)

Use the option -f to specify which format you want phpuml to generate.

$ phpuml /var/www/foo -f html -o /var/tmp/

This will scan /var/www/foo, and create the API documentation in /var/tmp/.

If you need to provide your own XMI file (instead of parsing existing PHP files), simply pass it as argument.

$ phpuml myFile.xmi -f php -o /var/tmp/

This will read the XMI code contained in myFile.xmi, and generate the PHP code templates in /var/tmp/. 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.

Selecting the UML/XMI version

To select which version of the UML/XMI standards you want your XMI to be written in, use the option -x:

$ phpuml /var/www/foo -x 1 -o /var/tmp/

Note that Argouml accepts XMI code only in version 1, while the Eclipse plugins (Ecore standard) only in version 2.

Converting from UML/XMI version 1 to 2

phpuml can automatically convert UML/XMI data from version 1.4 to version 2.1.

$ phpuml foo1.xmi -o foo2.xmi

This will read foo1.xmi, and, if its XMI content is in version 1.x, converts it to version 2, and stores it in foo2.xmi. Note that this is an ad hoc conversion, inspired on what Rationale Rose, Argouml and Umbrello generate. It does not convert all of the UML entities, and it does not interpret all of the various XMI dialects.

Filtering the files to parse

By default, phpuml will parse only files with the extension .php. To modify this file pattern, use the - m selector:

$ phpuml /var/www/foo -m *.php *.txt

This will parse all php and txt files.

Ignoring some files and folders

Use the switch -i:

$ phpuml /var/www/foo -i tests *.php4

This will parse all files, except the ones in the folder "tests", and the ones with an extension "php4".

Removing the dollar sign ($) in the documentation

Use the switch --no-dollar:

$ phpuml /var/www/foo --no-dollar -o foo.xmi

Other options are available. You will discover them by asking for help, like this:

$ phpuml -h

Form more information about how PHP_UML interprets your PHP code, read this section.