Answers:
pear还提供了PHP UML工具。
PHP_UML:
通过以下方式在命令行上安装它:
$ pear install pear/php_uml
(以前是这样,$ pear install pear/php_uml-alpha
但此后包装变得稳定了。)
生成您的xmi:
$ phpuml -o project.xmi
pear install PHP_UML-1.6.1
(见pear.php.net/package/PHP_UML/download/All或pear.php.net/package/PHP_UML)
我强烈推荐BOUML,其中:
phUML是用PHP编写的全自动UML类图表生成器,已获得BSD许可。它能够解析任何PHP5面向对象的源代码,并根据UML规范创建oo结构的适当图像表示。
./phuml -r /var/www/my_project -graphviz -createAssociations false -neato out.png
我发现做PHP和UML的最好的(Windows)软件是Sparx Systems Enterprise Architect。除了一系列功能外,它还支持以下功能为PHP功能:
并非免费(199美元),但绝对物有所值。
还有php2xmi。您需要做一些手工工作,但是它会生成所有类,因此您要做的就是将它们拖到Umbrello的类图中。。
否则,使用反射和graphviz生成图非常简单。我在这里有一个片段,您可以以此为起点。
这是我的操作方法(直接从代码到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使用“反向工程”数据将有所帮助。
如果希望通过现有的PHP类轻松生成UML,则可以考虑使用PHPStorm 3.0 IDE。将现有代码复制到UML方面做得很好。
看一下PHP Storm功能列表。
您可以将Visual Paradigm用于UML。这可能不是收入最高的产品(699美元),只是任何人都可以尝试的一种选择。它可以从PHP创建类图,反之亦然,不仅可以使用PHP,还可以选择多种语言,例如C#,C ++,Ruby,Java,VB.NET,Python,Objective C,Perl等。试用版可以检查。
从理论上讲,您可以使用PhpStorm使用UML可视化您的类。生成的代并不太好,但是您可以有效地重构东西,至少可以很好地预览父对象,实现,常量,属性,方法及其可见性。
情况
我想可视化同事之间已经存在的组件之间的通信。
使用PHPStorm的过程
https://blog.jetbrains.com/phpstorm/2017/09/uml-diagrams-in-phpstorm-2017-2/
优点
缺点
结果
无论如何,经过一个小时的辛苦工作,我只能生成不相关的框,并且不得不使用其他程序来链接关系。特别糟糕。但是我相信,一旦它们正常运行,它将是一个很棒的功能,因为随着代码的更改,图表将自动更新!
目前,请勿将PhpStorm用于UML图。
坦白地说,首先,您不应该从代码生成UML模型,而应该从UML模型;)。
即使您处在罕见的情况下,当您需要进行逆向工程时,通常也建议您手动进行或至少整理一下图表,因为自动生成的UML的视觉效果确实很差(=信息)大部分时间都很有价值。
如果您只需要生成图表,那么问自己为什么要这么做可能是一件好事?谁是目标受众,目标是什么?自动生成的图必须提供什么,什么代码不需要?
基本上我只接受一个回答。它太大了,难以理解。
这也是从头开始使用UML而不是开始编码的原因;)它被称为分析,并且正在下降,因为第二个商业人士都认为这有点太昂贵了,并不是真正必需的。