PHP UML Generator
如何基于PHP中的现有类生成UML图?
还有一些可用的梨 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,其他操作系统),
- function全面,深入人心(看发展的历史 ,很难相信这样的快速发展是可能的)。
- 支持插件,具有模块化架构(这允许用户贡献 ,看起来像BOUML社区正在形成)
我发现做PHP和UML的最好的(Windows)软件是Sparx Systems Enterprise Architect 。 除了一些function之外,它还支持以下 PHP:
- 将面向对象的PHP逆向工程化到UML类图中
- 从UML类图生成PHP类定义
- 将UML类中所做的更改同步到相应的PHP类定义中
- 将在PHP类定义中所做的更改同步到相应的UML类中
- 创buildUML序列图来显示PHP类的使用和使用方法
- 以标准RTF和HTML格式生成您的PHP代码的详细文档
- 在模型上执行代码工程来生成基本的PHP页面。
不是免费的(199美元),但绝对物有所值。
phUML
phUML是用PHP编写的全自动的UML类图表生成器,在BSD许可证下许可。 它能够parsing任何PHP5面向对象的源代码,并基于UML规范创build适当的oo结构的图像表示。
./phuml -r /var/www/my_project -graphviz -createAssociations false -neato out.png
一步一步的指导
你尝试过Autodia吗? 上次我试了一下它并不完美,但它已经足够好了。
还有php2xmi 。 你必须做一些手工工作,但是它会生成所有的类,所以你只需要把它们拖到Umbrello的类图中 。
否则,使用reflection和graphviz生成一个图很简单。 我在这里有一个片段,可以作为一个起点。
如果您想从现有的PHP类生成UML,您可能需要考虑PHPStorm 3.0 IDE。 它将现有的代码复制到UML中做得很好。
看看PHP风暴function列表 。
以下是我如何做的(直接从代码到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)
- 使用点或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使用“反向工程”数据将有所帮助。
您可以使用Visual Paradigm进行UML。 这可能不是最好的付款(这是699美元)的产品,只是作为一个select,如果任何人想尝试。 它可以从PHP创build类图,反之亦然,而不仅仅是PHP,还有一堆你可以select的语言,比如C#,C ++,Ruby,Java,VB.NET,Python,Objective C,Perl等等。审判你可以检查。
说实话,首先你不应该从代码生成UML模型,而是从UML模型生成代码;)。
即使您处于罕见的情况下,当您需要进行逆向工程时,通常build议您手动或至less整理图表,因为自动生成的UML的视觉效果很差(=信息)值大部分时间。
如果你只是需要生成图表,那么问自己为什么呢? 谁是目标受众,目标是什么? 什么是自动生成的图必须提供,什么代码不?
基本上,我只接受这个问题的一个答案。 它太大,不可理解。
这又是一个从UML开始的原因,而不是开始编码;)这就是所谓的分析,它正在走下坡路,因为业务的每一个人都认为这有点贵,而且并不是真的有必要。
理论上讲,你可以使用PhpStorm来使用UML可视化你的类。 这一代并不是很好,但是你可以有效地重构一些东西,至less可以很好地预览父母,实现,常量,属性,方法和可见性。
情况
我想要将已经存在的组件之间的沟通可视化为一个同事。
使用PHPStorm进行处理
https://blog.jetbrains.com/phpstorm/2017/09/uml-diagrams-in-phpstorm-2017-2/
优点
- 好的用户界面,最终图。
- 能够重构图表中的代码。
- 能够添加注释。
- 类图很好地表示私有/公共属性,构造函数,方法。
缺点
- 不支持PHP 7。
- 痛苦地使用。 无法调整生成的框。
- 当添加一个新的关系时,之前的关系会随机丢失:O wtf?
- 重新启动PhpStorm破坏图表
- 改变了我的想法,不可能使用关系
结果
无论如何,经过一段痛苦的工作之后,我只能够生成无关的盒子,不得不使用额外的程序来链接关系。 特别糟糕。 但是我相信,一旦它们能够正常工作,它将是一个很棒的function,因为随着代码的变化,图表会自动更新!
目前,不要使用PhpStorm来处理UML图表。