您的位置:首页 > 编程语言 > PHP开发

使用php类图绘制工具——phuml构建项目的类图

2012-09-24 22:54 567 查看
使用php类图绘制工具——phuml构建项目的类图

昨天偶尔在网上寻找制作UML类图的工具,本来打算自己亲自动手为statusnet项目画个类图出来(也许我太低估这个工作量了),于是下了一个windows版本的VP_suite 4.2,试用了一下手感相当好,界面也很不错的。而后我觉得应该有能把php源码作成类图的东东,上网搜了一下果然找到了——phUML (今天的主角)!过程中还找到一个phpDocumentor工具,能将代码变成很好的文档说明(以后再向大家介绍)。因为昨天要下班了,处长值班,我也不好意思很晚走,于是就没一气呵成来研究,于是乎拖到今天。经过一天的反复尝试终于ok!

首先,你要下载phUML必须有一个SVN客户端,这个开源项目是在SVN上维护的。你可以先检查下你的linux有没有安装SVN客户端:以下是我的fedora12的输出

[root@xiaofei ~]# svn --version

svn,版本 1.6.5 (r38866)

编译于 Sep 19 2009,11:02:40

版权所有 (C) 2000-2009 CollabNet。

Subversion 是开放源代码软件,请参阅 http://subversion.tigris.org/ 站点。

此产品包含由 CollabNet(http://www.Collab.Net/) 开发的软件。

可使用以下的版本库访问模块:

* ra_neon : 通过 WebDAV 协议使用 neon 访问版本库的模块。

- 处理“http”方案

- 处理“https”方案

* ra_svn : 使用 svn 网络协议访问版本库的模块。 - 使用 Cyrus SASL 认证

- 处理“svn”方案

* ra_local : 访问本地磁盘的版本库模块。

- 处理“file”方案

我的已经安装了SVN,如果没安装的话用yum install svn应该可以搞定。然后下载phUML项目:

[root@xiaofei ~]# svn checkout svn://svn.pureenergy.cc/phuml

A phuml/src

A phuml/src/app

A phuml/src/app/phuml

A phuml/src/exceptions

A phuml/src/exceptions/processor

A phuml/src/exceptions/processor/notFound.php

A phuml/src/exceptions/processor/graphviz

A phuml/src/exceptions/processor/graphviz/style

A phuml/src/exceptions/processor/graphviz/style/notFound.php

A phuml/src/exceptions/processor/externalExecution.php

A phuml/src/exceptions/processor/option.php

A phuml/src/exceptions/phuml

A phuml/src/exceptions/phuml/invalidProcessorChain.php

A phuml/src/exceptions/phuml/invalidProcessor.php

A phuml/src/exceptions/generator

A phuml/src/exceptions/generator/notFound.php

A phuml/src/exceptions/base

A phuml/src/exceptions/base/property.php

A phuml/src/interfaces

A phuml/src/interfaces/processor

A phuml/src/interfaces/processor/externalCommand.php

A phuml/src/interfaces/processor/graphviz

A phuml/src/interfaces/processor/graphviz/style.php

A phuml/src/interfaces/processor.php

A phuml/src/interfaces/generator.php

A phuml/src/config

A phuml/src/config/config.php

A phuml/src/scripts

A phuml/src/scripts/checkAll.sh

A phuml/src/autoload

A phuml/src/autoload/phuml_autoload.php

A phuml/src/autoload/php_autoload.php

A phuml/src/autoload/base_autoload.php

A phuml/src/autoload/processor_autoload.php

A phuml/src/autoload/structure_autoload.php

A phuml/src/classes

A phuml/src/classes/processor

A phuml/src/classes/processor/graphviz.php

A phuml/src/classes/processor/statistics.php

A phuml/src/classes/processor/options.php

A phuml/src/classes/processor/graphviz

A phuml/src/classes/processor/graphviz/style

A phuml/src/classes/processor/graphviz/style/default.php

A phuml/src/classes/processor/graphviz/options.php

A phuml/src/classes/processor/dot.php

A phuml/src/classes/processor/neato.php

A phuml/src/classes/base.php

A phuml/src/classes/generator

A phuml/src/classes/generator/tokenparser.php

A phuml/src/classes/php

A phuml/src/classes/php/interface.php

A phuml/src/classes/php/attribute.php

A phuml/src/classes/php/class.php

A phuml/src/classes/php/function.php

A phuml/src/classes/php/functionParameter.php

A phuml/src/classes/phuml.php

取出版本 69。

我当前的用户是root,所以我下载的项目已经保存到/root/phuml的目录中。

之后我好像不知道应该如何去运行这个项目代码,怎么安装他呢,这让我十分头疼。我甚至想这个项目的开发人 Jakob Westhoff 写了封email求助。我是个php菜鸟,不太清除命令行php这回事,费了很大周折。后来在网上找资料几乎没有关于phUML使用方法的。后来我尝试着用命令行的php去运行phuml这个文件,结果正确>_<

你可以用如下命令得到你php命令行的所在位置,一般都是/usr/bin/php这个命令

[root@xiaofei bin]# which php

/usr/bin/php

接下来你可以尝试用命令行运行以phuml

[root@xiaofei app]# php /root/phuml/src/app/phuml -h

PHP Warning: Module 'mbstring' already loaded in Unknown on line 0

phUML Version 0.2 (Jakob Westhoff <jakob@php.net>)

Usage: phuml [-h|-l] [OPTIONS] <DIRECTORY> <PROCESSOR> [PROCESSOR OPTIONS] ... <OUTFILE>

Commands:

-h Display this help text

-l List all available processors

Options:

-r Scan given directorie recursively

Example:

phuml -r ./ -graphviz -createAssociations false -neato out.png

This example will scan the current directory recursively for php files.

Send them to the "dot" processor which will process them with the option

"createAssociations" set to false. After that it will be send to the neato

processor and saved to the file out.png

看到这个你应该很兴奋了吧,确实离成功只有一步之遥了。上面的帮助信息相信能给你很大的帮助!!

那就用这个命令实验一把吧:(注意cd到phpmul那个执行文件的目录,即/root/phuml/src/app,下同 )

[root@xiaofei app]# php phuml -r ./ -graphviz -createAssociations false -Neato out.png

PHP Warning: Module 'mbstring' already loaded in Unknown on line 0

phUML Version 0.2 (Jakob Westhoff <jakob@php.net>)

[|] Running... (This may take some time)

[|] Parsing class structure

[|] Running 'Graphviz' processor

[|] Running 'Neato' processor

sh: neato: command not found

A fatal error occured during the process:

Execution of external program failed:

Array

不好,有错误了,这是怎么回事?难道我没有安装neato吗?检测下:

[root@xiaofei app]# php phuml -l

PHP Warning: Module 'mbstring' already loaded in Unknown on line 0

phUML Version 0.2 (Jakob Westhoff <jakob@php.net>)

The following processors are available:

* Processor: Graphviz

- Options:

style (string):

Style to use for the dot creation

createAssociations (boolean):

Create connections between classes that include each other. (This

information can only be extracted if it is present in docblock comments)

* Processor: Neato

- Options:

This processor does not have any options.

* Processor: Dot

- Options:

This processor does not have any options.

* Processor: Statistics

- Options:

This processor does not have any options.

上面说The following processors are available:而且还有Neato这个这个子程序阿。在这里我停滞了很长时间,后来我在经过很长时间的思索,我以为是Neato后面应该跟一个参数什么的,看了有关Graphviz的很多说明文档(phUML用的 Graphviz )来完成画图工作。突然我意识到可能没有安装 Graphviz啊!!!

于是进行安装:

[root@xiaofei app]# yum install graphviz

已加载插件:refresh-packagekit

adobe-linux-i386 | 951 B 00:00

updates/metalink | 6.8 kB 00:00

设置安装进程

解决依赖关系

--> 执行事务检查

---> 软件包 graphviz.i686 0:2.20.3-5.fc12.1 将被 升级

--> 完成依赖关系计算

依赖关系解决

===============================================================================================

软件包 架构 版本 仓库 大小

===============================================================================================

正在安装:

graphviz i686 2.20.3-5.fc12.1 fedora 766 k

事务概要

===============================================================================================

安装 1 软件包

更新 0 软件包

总下载量:766 k

确定吗?[y/N]:y

下载软件包:

graphviz-2.20.3-5.fc12.1.i686.rpm | 766 kB 00:01

运行 rpm_check_debug

执行事务测试

完成事务测试

事务测试成功

执行事务

正在安装 : graphviz-2.20.3-5.fc12.1.i686 1/1

已安装:

graphviz.i686 0:2.20.3-5.fc12.1

完毕!

这下再运行

[root@xiaofei app]# php phuml -r ./ -graphviz -createAssociations false -Neato out.png

就已经可以正常工作了。

你如果想对某些PHP文件画类图,就把上面的./换成你的PHP程序所在的位置就行了。

我开始画statusnet的类图,结果出现了一个错误

[root@xiaofei app]# php phuml -r /var/www/html/blog/ -graphviz -createAssociations false -Neato out.png

PHP Warning: Module 'mbstring' already loaded in Unknown on line 0

phUML Version 0.2 (Jakob Westhoff <jakob@php.net>)

[|] Running... (This may take some time)

[|] Parsing class structure

[|] Running 'Graphviz' processor

[|] Running 'Neato' processor

neato: failure to create cairo surface: out of memory

A fatal error occured during the process:

Execution of external program failed:

Array

内存泄漏?估计是statusnet中的类是在太多了,phml已经超载了。没办法只能一个目录一个目录的进行画类图,图实在太大了传不到博客上来,大家就自己画出来看吧!

yuchao@yuchao-MS-7597:~/source/phuml/src/app$ php phuml -r /home/yuchao/source/latest/piwik -graphviz -createAssociations false -Neato out.png

phUML Version 0.2 (Jakob Westhoff <jakob@php.net>)

[|] Running... (This may take some time)

[|] Parsing class structure

[|] Running 'Graphviz' processor

[|] Running 'Neato' processor

[|] Writing generated data to disk
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: