- 本文地址: https://www.laruence.com/2010/05/14/1473.html
- 转载请注明出处
在读别人代码的时候, 在没有详细文档的时候, 如何快速的看清整个代码的结构(类结构), 就成为了一个现实的问题.
今天我就介绍一种, 自动生成UML图的方法.
假设, 我有一个项目文件夹:laruence, 在这个文件夹上有一个文件Root.php(事实上, 无论多级目录, 多个文件, 都可以).
<?php abstract class Root { private $instance; abstract public function Hi(); } interface Intro { public function Say(); } class Sub extends Root implements Intro { private $instance; public function Say() { echo "I am Laruence"; } public function Hi() { echo "Hello!"; } } ?>
首先, 我们要使用PHP_UML(PHP_UML)根据代码生成XMI.
使用方法比较简单, 在安装PHP_UML以后, 运行:
phpuml laruence/ -o laruence.xmi -n laruence -f xmi --pure-object --no-deployment-view --no-component-view --no-docblocks
会得到一个laruence.xmi文件, phpuml的具体参数可以通过phpuml --help了解.
有了xmi以后, 如何转成UML图呢?
Visio2007不支持导入XMI, 我找到了另外的一个工具:Altova Umodel, 这个工具可以支持XMI到UML图的转换, 需要注册, 不过提供了30天的使用许可(大家要是有更好的替换方案, 欢迎补充).
在Umodel导入laruence.xmi以后 ,生成UML图, 就得到了如下的PNG:
是不是很方便呢?
另外PHP_UML还可以生成html格式, 做为一种doc gen工具也不错. 更可以通过xmi生成PHP文件.
[…] 本文地址: https://www.laruence.com/2010/05/14/1473.html […]
Cool !!!
@Laruence 您好,我按照http://www.laruence.com/2010/05/14/1473.html 使用php_uml在linux生成的xmi文件,使用了很多uml工具都无法导入这个xmi文件,即使你提到的altova官网因为回复说只给合作商试用其他人不可试用只能购买而作罢,您有没有好办法能指点我一下?某些工具会提示我的XMI文件中:xmi Documentation exporter=PEAR反斜杠PHP_UML 不可知的exporter我是xmi2.1的版本,去掉或修改这个属性均无法导入xmi文件。请教了。
@Laruence 您好,我按照http://www.laruence.com/2010/05/14/1473.html 使用php_uml在linux生成的xmi文件,使用了很多uml工具都无法导入这个xmi文件,即使你提到的altova官网因为回复说只给合作商试用其他人不可试用只能购买而作罢,您有没有好办法能指点我一下?某些工具会提示我的XMI文件中: 不可知的exporter我是xmi2.1的版本,去掉或修改这个属性均无法导入xmi文件。请教了。
I am regular visitor, how are you everybody? This post posted
at this web site is really good.
site [Dario]
php phuml -r ./ -graphviz -createAssociations false -Neato out.png
http://blog.csdn.net/cyberexp2008/article/details/8014966
推荐使用Umbrello UML Modeller
直接读取xmi文件,不过目前支持xmi version1.2 所以在phpuml转换的时候要加上 -x 1参数。
http://umbrello.kde.org/
鸟哥,你觉得 StarUML 和 :Altova Umodel 哪个更适合做PHP UML呢?
OK了,才看到Altova UModel 可以导入xmi。
整个过程中,遇到不少麻烦。
1.pear安装的时候提示需要xsl.
2.本机的php5.3.5中不含php_xsl.dll扩展,下载了好几个版本的dll都无效,最后在 php5.3.27中找到。
3.由于本地php在d:\program files(x86)\php\下, 路径含括号,也不能正确执行 phpuml 生成.xmi文件(看了下是类似xml的格式)。
4.用Altova UModel打开 xmi文件时,提示不能打开。
bouml可以识别xmi1和xmi2版本,基本上可以符合要求了。。ArgoUML据说也是支持xmi1的,不过我没测试
如果是导出html,怎么支持utf-8呢?
好东西,谢谢,今晚有得折腾了。哈哈
@luckgo 正是, 正是, 多谢指正, 已经修改.
我折腾到深夜,装了Altova MapForce,但怎么也找不到导入xmi的菜单,倒是在google上找到Altova Umodel导入xmi的介绍,请问Laruence,是不是你搞错了耶?
[…] 使用PHP_UML生成代码的UML图 […]
哈哈,去试试。还有,建议换个验证码,现在这个太难用了。
[…] This post was mentioned on Twitter by 小白. 小白 said: 使用PHP_UML生成代码的UML图 – http://goo.gl/UAQp […]
@cc0cc 有, visio 03据说有个插件, 可以把UML图导出成XMI. PHP_UML就可以根据XMI生成PHP代码了, 当然, mapForce也可以导出XMI
要是能进一步识别程序的调用关系就更好啦
哥学社不遗余力地顶起,有没有反向的办法,通过uml生成php代码?