10

情况

我有一个 PHP 项目,其中有很多类,并且遵循Zend 命名约定,在很多文件夹中有很多关系。

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

目标

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

尝试

1. 在 NetBeans 中

NetBeans是一个很棒的 IDE,有很多特性。事实上,它可以识别类依赖关系,明智的做法是假设它有某种方式以图形方式查看这种关系,本机或通过插件。存在这样的插件,但适用于 5.5 版。我有7.1,它不兼容。失败。

2.企业架构师

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

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

注意:我在之前创建了一个并行线程。

3. PHP_UML

找到这个 PEAR 工具。看起来不错。因此,我阅读了有关如何从各种来源为我的设置安装它的文档,然后运行它。首先,我使用了html输出格式。伟大的!大量带有索引的文档,bla bla bla。然而,它可以在我想要的方向上做的最好的事情是: 类图? 不用说,我猜,这是我实际需要的一个非常糟糕的超级简化版本。结论:失败。

4.企业架构师+PHP_UML

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

因此,我将其导入 Enterprise Architect。结果:与之前单独使用 Enterprise Architect 相同,只是没有类图。只是上课。据我了解,我现在可以手动创建关系。史诗般的失败。

5.ArgoUML + PHP_UML

在我寻找解决方案的某个地方,我偶然发现有人说他们使用ArgoUML的评论。已下载并安装。XMI 导入有些麻烦(必须明确将版本更改为 1)。失败(参见尝试 3)。

结论

如此看似微不足道的任务,却又如此艰巨。我是否必须浏览整个列表,尝试每个应用程序?

4

2 回答 2

5

其中一种方法是采用我在尝试 2 或 4 中说明的方法,然后按照此处为 Enterprise Architect 提供的说明进行操作。

使用 PHP_UML生成XMI​​ 文件:

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

这个 XMI 以后可以与Enterprise ArchitectArgoUML其他 XMI 工具一起使用。

于 2012-09-28T13:57:04.567 回答
1

编辑:对于想要从 PHP 项目生成 UML 类图的人来说,这个答案是另一种选择,它没有解释如何读取 XMI 文件)

目标

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

如果您的目标是从 PHP 项目生成类图,我找到了比使用 PHP_UML 更好的解决方案。您可能想要的是BoUML,使用此软件,您可以选择一个 PHP 项目文件夹并对其进行逆向工程。然后创建一个类图。当您在其上拖放类时,关系与 AlgoUML 不同(如果我没记错的话)。在这种情况下,XMI 文件不再有用。

于 2017-06-07T02:31:18.073 回答