从XMI生成类图

10

情况

我有一个使用 Zend 命名规范 的 PHP 项目,其中有许多类与许多文件夹中的关系。

我使用 NetBeans IDE 7.1。 我在 Windows 7 上工作。

目标

我需要查看类之间的关系图形表示,可能具有不同深度和不同复杂度。此外,如果图表中的类是可点击的,则会很好。我不一定需要生成文档。

尝试

1. 在NetBeans中

NetBeans 是一个功能齐全的 IDE。实际上,它识别类依赖性,并且可以假设它具有某种方式本地或通过插件以图形方式查看此关系。这样的插件存在,但适用于版本5.5。我有7.1,不兼容。失败。

2. Enterprise Architect

简单的谷歌搜索将Enterprise Architect列为解决此类问题的万能、全面的工具。于是,我下载并安装了它。我不会详细说明我无法理解如何做任何事情以及教程如何吹嘘软件可以做什么,但很少说如何

所以,我导入了源代码。它生成了许多不同的类并解析了所有成员。此外,它还生成了类图。我想:“完美!”但不幸的是。类图仅显示位于同一源文件夹中的文件之间的关系,尽管这些关系在类的属性中可见注册。搜索有关如何将所有这些图表合并为一个的文档无果。失败。

注意: 我之前创建了一个并行线程,链接在这里.

3. PHP_UML

发现了这个PEAR工具。看起来不错。于是,我阅读了各种来源的有关如何为我的设置安装它的文档,并运行了它。首先,我使用html输出格式。太好了!有许多带有索引的文档,等等。然而,它在我想要的方向上能做到的最好的一点是这样的:Class Diagram? 不用说,我猜,这是一个非常简单、超级简化的版本,与我实际需要的相比。结论:失败。

4. Enterprise Architect + PHP_UML

然而,PHP_UML也可以生成XMI。哇。非常好。我可以存储我的关系并以不同的方式查看它们并与其他人交流。

所以,我将其导入Enterprise Architect。结果:与仅使用Enterprise Architect时相同,只有没有类图。只有类。根据我所读到的,现在我可以手动创建关系。失败。

5. ArgoUML + PHP_UML

在寻找解决方案的过程中,我偶然发现了某个人的评论,他说他使用ArgoUML。下载并安装。XMI导入时遇到了一些麻烦(必须显式更改版本为1)。失败(见尝试3)。

结论

看起来是一个貌似微不足道的任务,但却如此困难。我必须浏览这个完整的列表,尝试每个应用程序吗?


1
这是四个不同的问题,只有两个与XMI有关。StackOverflow的问题和答案旨在形成一个存储库,供其他人在未来找到相同问题的解决方案。请将此问题拆分为每个工具一个问题,我将回答关于EA的那个问题。 - Uffe
1
我已经在你的(相当重复)问题中告诉过你,你也可以使用Phpstorm来生成。此外,这个问题听起来更像是抱怨,没有帮助。如果你需要使用Netbeans,你应该提交一个功能请求(我认为与之相关的一个请求已经关闭,因为没有兴趣做那个,所以如果你不够灵活或能力不足以使用其他现有工具,你可能选择了错误的产品)。 - hakre
2
Hakra,没有“四个不同的问题”。我已经在“目标”部分说明了我需要什么。 “尝试”部分列出了我所做的事情,以便没有相同的建议。 - XedinUnknown
1
我是说这是四个不同的问题的人,我坚持这个观点。前两个与XMI无关,正如标题所示。你无法将所有相关标签添加到问题中也清楚地表明它横跨太多不同的主题。我理解你的沮丧,但请接受这不是一个带有对话线程的讨论论坛,而是一个问答网站,问题和答案都应该与他人相关(http://stackoverflow.com/questions/how-to-ask),而实现这一点的最佳方法是使它们具体化。 - Uffe
3
乌菲,我不明白你是从哪里看到四个不同的问题的。尝试说明了我现在所处的位置。问题是:我想从源代码生成一个类图。现在,我有一个XMI文件,我想从那个文件生成图表,就像问题标题所示。 - XedinUnknown
2个回答

5

其中一种方法是采用我尝试过的第2或第4种方法,然后按照此处给出的企业建模工具的说明进行操作。

使用PHP_UML生成XMI文件的方法:

  • 如果您已经单独安装了PHP,请按照这些说明安装PEAR。
  • 如果您正在使用Windows下的XAMPP(我的情况),请按照这些说明将PEAR添加到PATH环境变量中,从而使PEAR可通过CMD使用,并学习如何在*nix和Windows系统中安装软件包。提示:对于Windows,路径分隔符是“;”(分号)。
  • 在某些设置中,例如使用XAMPP,您可能需要激活XSL扩展程序。在这种情况下,打开您的php.ini文件(您可能需要管理员权限来保存它),并取消注释或添加以下行到“动态扩展”部分的底部:extension=php_xsl.dll
  • 使用pear install PHP_UML安装PHP_UML包。
  • 执行phpuml -f xmi -o name_of_output_dir。如果您计划稍后使用生成的XMI与一些旧程序,请添加-x 1以指定XMI版本1。
  • 对我来说,这并没有立即起作用,说我缺少../../data/xmlschema.rng。不确定为什么会发生这种情况,但如果您遇到类似的错误,可以从这里下载它,并将其放置在PEAR目录下的data文件夹中。
这个XMI文件可以后续与Enterprise Architect, ArgoUML其他XMI工具一起使用。

1
很好,可以添加简短的说明如何在Enterprise Architect中可视化类图。1) 使用以下方法将xmi导入EA:Ctrl+Alt+I菜单>包>导入/导出>从XMI文件导入包2) 显示图表:??? - Vladimir Vukanac
1
@VladimirVukanac 这个答案中的第一个链接(名为“here”)。 - cprn
那是很久以前的事了。我得回想一下当时的目标是什么。不过还是谢谢! - Vladimir Vukanac

1

(编辑:本答案是为那些想从PHP项目中生成UML类图的人提供的替代方案,它不解释如何阅读XMI文件)

目标

我需要看到类之间关系的图形表示,可能在不同深度和不同复杂度的变化中。此外,如果图表中的类是可点击的,那就太好了。我并不一定需要生成文档。

如果您的目标是从PHP项目中生成一个类图,我发现使用PHP_UML的方法并不是最佳选择。您可能需要使用BoUML这个软件,它可以选择一个PHP项目文件夹并进行反向工程。然后创建一个类图。当您将类拖放到其中时,关系也会自动显示,不像AlgoUML(如果我没有记错的话)。在这种情况下,XMI文件不再有用。


很遗憾,BoUML已经过时了,例如它不支持混合返回类型(function Foo: ?Bar),这会导致反向工程失败。 PHP_UML 生成正确的XMI文件,但由于同样的原因,BoUML在导入时会出现错误。 - cprn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接