PHP UML生成器

时间:2008-12-26 08:00:09

标签: php uml class-diagram

如何基于PHP中的现有类生成UML图?

11 个答案:

答案 0 :(得分:41)

还有pear提供的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

答案 1 :(得分:40)

我强烈推荐BOUML

  • 非常快(有史以来创建的最快的UML工具,请查看benchmarks),
  • 坚如磐石 PHP导入和导出支持(也支持C ++,Java,Python)
  • 是多平台(Linux,Windows,其他操作系统),
  • 是全功能的,令人印象深刻的集中开发(看development history,很难相信这样的快速进展是可能的。)
  • 支持插件,具有模块化架构(这允许user contributions,看起来像BOUML社区正在形成)

答案 2 :(得分:21)

phUML

  

phUML是用PHP编写的全自动UML类diagramm生成器,根据BSD许可证授权。它能够解析任何PHP5面向对象的源代码,并根据UML规范创建oo结构的适当图像表示。

UML Example

./phuml -r /var/www/my_project -graphviz -createAssociations false -neato out.png

Step by step guide

答案 3 :(得分:19)

我发现做PHP和UML的最佳(Windows)软件是Sparx Systems Enterprise Architect。除了features的完整性之外,它支持PHP的following

  • 将面向对象的PHP反向工程为UML类图
  • 从UML类图生成PHP类定义
  • 将UML类中所做的更改同步到相应的PHP类定义
  • 将PHP类定义中所做的更改同步到相应的UML类
  • 创建UML序列图以显示PHP类使用的内容及其使用方式
  • 以标准RTF和HTML格式制作详细的PHP代码文档
  • 在模型上执行代码工程以生成基本PHP页面。

不是免费的(199美元),但绝对物有所值。

答案 4 :(得分:7)

你有没有试过Autodia?上次我尝试它并不完美,但它已经足够了。

答案 5 :(得分:7)

还有php2xmi。你必须做一些手工工作,但它会生成所有类,所以你要做的就是将它们拖到Umbrello中的类图中。

否则,使用反射和graphviz生成图表非常简单。我有一个代码段over here,您可以将其作为起点。

答案 6 :(得分:6)

以下是我的做法(直接从代码到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. 使用dotfdpsfdp呈现类图。
  7. 以下是使用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_UMLphp2xmi而不是BOUML来执行“逆向工程”部分。我还没试过。

    (我正在使用“逆向工程”这个短语,因为看起来UML人员在使用这些词时意味着从源代码中提取类和方法信息。我会亲自解释这些词从可执行二进制文件或捕获的原始数据线中提取信息。)

    如果您更喜欢手工绘制类图(而不是使用计算机来完成所有绘图),您可以使用BOUML或ArgoUML进行绘图。在这种情况下,通过BOUML使用“逆向工程”数据将有所帮助。

答案 7 :(得分:5)

如果您希望从现有的PHP类轻松生成UML,可能需要考虑使用PHPStorm 3.0 IDE。它很好地将现有代码复制到UML中。

查看PHP Storm feature list

答案 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/

<强>优点

  • 不错的用户界面,最终图表。
  • 能够从图表中重构代码。
  • 能够添加笔记。
  • 类图很好地象征着私有/公共属性,构造函数和方法。

<强>缺点

  • 不支持PHP 7。
  • 痛苦地使用。无法调整生成的框的大小。
  • 添加新关系时,先前的关系会随机丢失:O wtf?
  • 重新启动PhpStorm会破坏图表
  • 改变主意,不可能使用关系

<强>结果

无论如何,经过一些痛苦的工作后,我只能生成不相关的盒子,不得不使用额外的程序来链接关系。特别糟糕。但是我相信一旦它们正常运行它将是一个很棒的功能,因为随着代码的变化,图表会自动更新!

目前,不要将PhpStorm用于UML图表。

答案 10 :(得分:0)

老实说,首先,你不应该从代码生成UML模型,而是从UML模型生成代码;)。

即使您处于极少数情况下,当您需要进行逆向工程时,通常建议您手动或至少整理图表,因为自动生成的UML视觉效果非常差( =信息)大部分时间都是值。

如果您只需要生成图表,那么问问自己为什么这可能是件好事?谁是目标受众,目标是什么?自动生成的图表必须提供什么,代码不是什么?

基本上我只接受这个问题的一个答案。它太大而且难以理解。

这首先是开始使用UML的原因,而不是开始编码;)它被称为分析并且它正在下降,因为商业中的每一个人都认为它是&#39 ;有点太昂贵而且没有必要。