题 PHP UML生成器[关闭]


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


102
2017-12-26 08:00


起源


我不再使用PHP,所以我没有实际测试的代码。当我发布这个时,最初的答案都没有做得足够,但从那以后发生了很多变化。我正在使用PHP 5.2,现在它是PHP7。 - Jeffrey04


答案:


还有可用的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


41
2018-02-26 17:24



出于某种原因,pear.com不喜欢没有尾部斜杠的链接: pear.php.net/package/PHP_UML - Stephen Fuhry
@Stephen,是的我也注意到了!如果单击该链接,它将为您提供404,但如果您选择地址栏并按Enter,则可以使用。 - nickf
几年后命令现在 pear install PHP_UML-1.6.1 (看到 pear.php.net/package/PHP_UML/download/All 要么 pear.php.net/package/PHP_UML) - Ben
这应该是公认的答案。这个工具很壮观。 - Xofo
安装1.6.2版本,但收到错误:'phpuml'未被识别为内部或外部命令, - Darius.V


我强烈推荐 BOUML 哪一个:

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

39
2018-05-19 20:24



基准看起来真的令人印象深刻。我喜欢企业架构师,但它没有PHP支持。我将通过这个工具,谢谢。 - Paul Dragoonis
@Paul Dragoonis Sparx Systems企业架构师 不 有PHP支持 - 和 不是最糟糕的一个。 - ax.
BOUML的网页现在声明:“注意:由于持续的许可证违规,攻击和维基百科人员的侮辱[...],我决定停止Bouml的工作,除了修复bug。” - MPV
“[2011年12月18日]下载暂停,直至另行通知”来自其官方网站。 http://bouml.free.fr/download.html  - 这是因为我需要一个Win7版本。我想它仍然可以从Ubuntu存储库中获得 - 需要检查 - Val Redchenko
版本6.1发布 2012年9月23日。看来发展再次回升。没有关于减速,停止等的通知 bouml.fr/historic.html - Andrew Ensley


phUML

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

UML Example

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

循序渐进的指南


21
2017-12-11 18:12



需要SVN / subversion下载,并没有真正说明源代码的许可证是什么,但它看起来不错!是的,我会仔细查看源代码,它绝对没有许可证,唯一的自述文件在我认为的网站上 - Rudolf Olah
许可证直接链接在项目的网站侧边栏中,作者名为Creative Commons: creativecommons.org/licenses/by-nc-sa/3.0 - Anthony Hatzopoulos
这是该网站内容的许可,该项目的许可证 必须 被列入项目本身。 - Rudolf Olah
我发送了一封电子邮件给作者雅各布,他回复了对存储库的更新,并且清晰明了 3条款bsd许可证 - Anthony Hatzopoulos
我下载了这个并在经过一些修修补补后才开始工作。真的很不错,除了我无法让协会工作,但我相信我会弄清楚的。很好,很简单。虽然没有GUI,但没有那么大的交易。 - Impulss


我发现做PHP和UML的最好的(Windows)软件 Sparx Systems  企业架构师。除了一个完整的 特征,它支持 以下 对于PHP:

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

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


19
2018-04-15 10:27



哇,这确实是一个非常有用和专业的计划,感谢小费!!我刚刚尝试使用Sparx EA的逆向工程方法从PHP源代码生成UML类图,它就像一个魅力,我感到很震惊这是多么好用。 :D随着我们的项目变得越来越大,我们创建越来越多的对象,我们越来越关注自己的代码,但它是一个很好的帮助,因为它以正确的方式生成UML图(当然,可能会出现异常)我们完成代码之后。这甚至有助于简化对象之间的关系。 - Sk8erPeter
@ax - 我是新手,我在他们的功能列表中有点迷失(在“比较版本”下)。什么是允许我输入PHP代码(或链接到PHP文件)的功能的名称,并得到一个图表作为回报?试图找出我可能需要的版本。 - JDelage


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


7
2017-12-26 08:46



我试过autodia但不知何故我不能生成准确的类图(php5) - Jeffrey04


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

否则,使用反射和graphviz生成图表非常简单。我有一个片段 在这里,你可以用作起点。


6
2017-12-27 16:46





这是我如何做到的(直接从代码到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文件转换为点格式(您可能需要使用 撒克逊 而不是xsltproc,因为使用XSLT2而使其工作)
  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使用“逆向工程”数据将有所帮助。


5
2017-12-14 08:32





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

看看吧 PHP Storm功能列表


5
2017-12-14 18:20



不可视化依赖关系,只显示继承。 - Basil Musa