How do I generate UML diagram based on existing classes in PHP?
Have you tried Autodia yet? Last time I tried it it wasn't perfect, but it was good enough.
There's also php2xmi. You have to do a bit of manual work, but it generates all the classes, so all you have to do is to drag them into a classdiagram in Umbrello.
Otherwise, generating a diagram with the use of reflection and graphviz, is fairly simple. I have a snippet over here, that you can use as a starting point.
There's also the PHP UML tool available from pear.
PHP_UML:
- Can generate UML/XMI files in version 1.4, or in version 2.1 (logical, component, and deployment views)
- Can generate an API documentation in HTML format
- Can generate PHP code (code skeleton) from a given XMI file
- Can convert UML/XMI content from version 1.4 to version 2.1
install it on the command line via:
$ pear install pear/php_uml-alpha
generate your xmi:
$ phpuml -o project.xmi
the best (Windows) software i have found to do PHP and UML is Sparx Systems Enterprise Architect. besides a pletora of features, it supports the following for PHP:
- Reverse engineer object oriented PHP into UML class diagrams
- Generate PHP class definitions from UML class diagrams
- Synchronize changes made in a UML class into the corresponding PHP class definition
- Synchronize changes made in a PHP class definition into the corresponding UML class
- Create UML sequence diagrams to show what PHP classes use and how they are used
- Produce detailed documentation of your PHP code in standard RTF and HTML format
- Perform code engineering on models to generate base PHP pages.
not free ($199), but definitely worth the money.
I strongly recommend BOUML. It's a free UML modelling application, which:
- is extremely fast (fastest UML tool ever created, check out benchmarks),
- has rock solid PHP import and export support (also supports C++, Java, Python)
- is multiplatform (Linux, Windows, other OSes),
- is full featured, impressively intensively developed (look at development history, it's hard to believe that such fast progress is possible).
- supports plugins, has modular architecture (this allows user contributions, looks like BOUML community is forming up)