如何基于PHP中的现有类生成UML图?
答案 0 :(得分:41)
还有pear提供的PHP UML工具。
PHP_UML:
通过以下命令在命令行中安装:
$ pear install pear/php_uml
(以前是$ pear install pear/php_uml-alpha
,但包已经稳定了。)
生成你的xmi:
$ phpuml -o project.xmi
答案 1 :(得分:40)
我强烈推荐BOUML:
答案 2 :(得分:21)
phUML是用PHP编写的全自动UML类diagramm生成器,根据BSD许可证授权。它能够解析任何PHP5面向对象的源代码,并根据UML规范创建oo结构的适当图像表示。
./phuml -r /var/www/my_project -graphviz -createAssociations false -neato out.png
答案 3 :(得分:19)
我发现做PHP和UML的最佳(Windows)软件是Sparx Systems Enterprise Architect。除了features的完整性之外,它支持PHP的following:
不是免费的(199美元),但绝对物有所值。
答案 4 :(得分:7)
你有没有试过Autodia?上次我尝试它并不完美,但它已经足够了。
答案 5 :(得分:7)
还有php2xmi。你必须做一些手工工作,但它会生成所有类,所以你要做的就是将它们拖到Umbrello中的类图中。
否则,使用反射和graphviz生成图表非常简单。我有一个代码段over here,您可以将其作为起点。
答案 6 :(得分:6)
以下是我的做法(直接从代码到PDF绘图,无需手动绘制任何内容):
以下是使用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使用“逆向工程”数据将有所帮助。
答案 7 :(得分:5)
如果您希望从现有的PHP类轻松生成UML,可能需要考虑使用PHPStorm 3.0 IDE。它很好地将现有代码复制到UML中。
答案 8 :(得分:1)
您可以使用Visual Paradigm进行UML。这可能不是最好的(699美元)产品,如果有人想尝试的话,也可以选择。它可以从PHP创建类图,反之亦然,而不仅仅是PHP,你可以选择一些语言,如C#,C ++,Ruby,Java,VB.NET,Python,Objective C,Perl等。还有一个试用,你可以检查。
答案 9 :(得分:1)
理论上,您可以使用PhpStorm使用UML可视化您的类。这一代并不是很好,但你可以有效地重构东西,至少可以以一种很好的方式预览父母,实现,常量,属性,方法和它们的可见性。
<强>场合强>
我希望将现有组件之间的通信可视化为同事。
使用PHPStorm进行处理
https://blog.jetbrains.com/phpstorm/2017/09/uml-diagrams-in-phpstorm-2017-2/
<强>优点强>
<强>缺点强>
<强>结果强>
无论如何,经过一些痛苦的工作后,我只能生成不相关的盒子,不得不使用额外的程序来链接关系。特别糟糕。但是我相信一旦它们正常运行它将是一个很棒的功能,因为随着代码的变化,图表会自动更新!
目前,不要将PhpStorm用于UML图表。
答案 10 :(得分:0)
老实说,首先,你不应该从代码生成UML模型,而是从UML模型生成代码;)。
即使您处于极少数情况下,当您需要进行逆向工程时,通常建议您手动或至少整理图表,因为自动生成的UML视觉效果非常差( =信息)大部分时间都是值。
如果您只需要生成图表,那么问问自己为什么这可能是件好事?谁是目标受众,目标是什么?自动生成的图表必须提供什么,代码不是什么?
基本上我只接受这个问题的一个答案。它太大而且难以理解。
这首先是开始使用UML的原因,而不是开始编码;)它被称为分析并且它正在下降,因为商业中的每一个人都认为它是&#39 ;有点太昂贵而且没有必要。