如何基于PHP中的现有类生成UML图?
还有梨提供的PHP UML工具.
PHP_UML:
可以在1.4版或2.1版(逻辑,组件和部署视图)中生成UML/XMI文件
可以生成HTML格式的API文档
可以从给定的XMI文件生成PHP代码(代码框架)
可以将UML/XMI内容从1.4版转换为2.1版
通过以下命令在命令行上安装:
$ pear install pear/php_uml
(过去曾经如此,$ pear install pear/php_uml-alpha
但包装已经稳定了.)
生成你的xmi:
$ phpuml -o project.xmi
我强烈推荐BOUML:
是非常快的(有史以来最快的UML工具,检查基准),
拥有坚如磐石的PHP导入和导出支持(也支持C++,Java,Python)
是多平台(Linux,Windows,其他操作系统),
功能齐全,令人印象深刻的发展(看看发展历史,很难相信这种快速进步是可能的).
支持插件,具有模块化架构(这允许用户贡献,看起来像BOUML社区正在形成)
phUML是用PHP编写的全自动UML类diagramm生成器,根据BSD许可证授权.它能够解析任何PHP5面向对象的源代码,并基于UML规范创建oo结构的适当图像表示.
./phuml -r /var/www/my_project -graphviz -createAssociations false -neato out.png
一步一步指导
我发现做PHP和UML的最好的(Windows)软件是Sparx Systems Enterprise Architect.除了功能的完整性,它还支持PHP 的以下内容:
将面向对象的PHP反向工程为UML类图
从UML类图生成PHP类定义
将UML类中所做的更改同步到相应的PHP类定义中
将PHP类定义中所做的更改同步到相应的UML类中
创建UML序列图以显示PHP类使用的内容及其使用方式
以标准RTF和HTML格式生成PHP代码的详细文档
在模型上执行代码工程以生成基本PHP页面.
不是免费的(199美元),但绝对物有所值.
你试过Autodia了吗?上次我尝试它并不完美,但它已经足够好了.
还有php2xmi.你必须做一些手工工作,但它会生成所有类,所以你要做的就是将它们拖到Umbrello中的一个类图中.
否则,使用反射和graphviz生成图表非常简单.我在这里有一个片段,你可以用它作为起点.
这是我如何做到的(直接从代码到PDF绘图,无需手动绘制任何东西):
使用BOUML "逆向工程PHP代码"[原文如此]来提取类模型(BOUML可以从Ubuntu的"universe"存储库中获得).我认真推荐BOUML用于这一步,因为与我尝试的许多其他程序相比,它真的很快.此外,似乎BOUML似乎正确地提取模型(对于BOUML甚至试图提取的部分).
使用BOUML将模型导出为XMI 1.4文件
使用ArgoUML导入所述XMI文件(您可以在此步骤中使用webstart版本)
从ArgoUML导出XMI(我不知道输出是哪个XMI版本/变体,但它与BOUML的输出结果不同.argouml-graphviz无法直接从BOUML处理XMI文件).
使用argouml-graphviz将ArgoUML导出的XMI文件转换为点格式(由于使用XSLT2,您可能需要使用saxon而不是xsltproc才能使其工作)
使用dot或fdp或sfdp渲染类图.
下面是使用fdp输出PDF图的合适命令行示例(假设argouml-graphviz XLST处理生成的点文件保存为xmi-model.dot):
fdp -Tpdf -Gmaxiter=1000 -Gmindist=0.5 -Gpackmode=node \ -Eweight=0.05 -Elen=1.0 -Eminlen=1.0 -Gsplines=true \ -Goverlap=false xmi-model.dot -oxmi-model.pdf
作为替代方案,您可以尝试PHP_UML或php2xmi而不是BOUML来执行"逆向工程"部分.我还没试过.
(我正在使用"逆向工程"这个短语,因为看起来UML人员在使用这些词时意味着从源代码中提取类和方法信息.我个人会将这些词解释为从可执行二进制文件中提取信息或捕获原始信息电线数据.)
如果您更喜欢手工绘制类图(而不是使用计算机来完成所有绘图),则可以使用BOUML或ArgoUML进行绘图.在这种情况下,通过BOUML使用"逆向工程"数据将有所帮助.
如果您希望从现有的PHP类轻松生成UML,可能需要考虑PHPStorm 3.0 IDE.它很好地将现有代码复制到UML中.
看看PHP Storm功能列表.