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结构的图像表示。

UML示例

 ./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绘图,而不需要手动绘制任何东西):

  1. 使用BOUML “逆向工程PHP代码”(原文如此)来提取类模型(BOUML可从Ubuntu的“universe”存储库中获得)。 我认真地推荐BOUML这个步骤,因为和我试过的很多其他程序相比,速度真的很快。 另外,似乎BOUML似乎正确地提取了模型(对于BOUML甚至试图提取的部分)。
  2. 使用BOUML将模型导出为XMI 1.4文件
  3. 使用ArgoUML导入所述XMI文件(您可以使用webstart版本来执行此步骤)
  4. 从ArgoUML中导出XMI(我不知道输出是哪个XMI版本/变体,但是和BOUML的输出不一样,argouml-graphviz不能直接从BOUML处理XMI文件)。
  5. 使用argouml-graphviz将ArgoUML导出的XMI文件转换为点格式(由于使用XSLT2,您可能需要使用saxon而不是xsltproc)
  6. 使用点或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图表。