msgbartop
PHP语言, PHP扩展, Zend引擎相关的研究,技术,新闻分享 – 左手代码 右手诗
msgbarbottom

14 May 10 使用PHP_UML生成代码的UML图

在读别人代码的时候, 在没有详细文档的时候, 如何快速的看清整个代码的结构(类结构), 就成为了一个现实的问题.

今天我就介绍一种, 自动生成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:

UML图

UML图

是不是很方便呢?

另外PHP_UML还可以生成html格式, 做为一种doc gen工具也不错. 更可以通过xmi生成PHP文件.


分享到:



Related Posts:

Tags: , , ,

19 Responses to “使用PHP_UML生成代码的UML图”

  1. ho1 |

    @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文件。请教了。

  2. ho |

    @Laruence 您好,我按照http://www.laruence.com/2010/05/14/1473.html 使用php_uml在linux生成的xmi文件,使用了很多uml工具都无法导入这个xmi文件,即使你提到的altova官网因为回复说只给合作商试用其他人不可试用只能购买而作罢,您有没有好办法能指点我一下?某些工具会提示我的XMI文件中: 不可知的exporter我是xmi2.1的版本,去掉或修改这个属性均无法导入xmi文件。请教了。

  3. Dario |

    I am regular visitor, how are you everybody? This post posted
    at this web site is really good.

    site [Dario]

  4. yuchao |

    php phuml -r ./ -graphviz -createAssociations false -Neato out.png

    http://blog.csdn.net/cyberexp2008/article/details/8014966

  5. bluse |

    推荐使用Umbrello UML Modeller
    直接读取xmi文件,不过目前支持xmi version1.2 所以在phpuml转换的时候要加上 -x 1参数。
    http://umbrello.kde.org/

  6. 云上旭 |

    鸟哥,你觉得 StarUML 和 :Altova Umodel 哪个更适合做PHP UML呢?

  7. ikodota |

    OK了,才看到Altova UModel 可以导入xmi。

  8. ikodota |

    整个过程中,遇到不少麻烦。
    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文件时,提示不能打开。

  9. 梧桐 |

    bouml可以识别xmi1和xmi2版本,基本上可以符合要求了。。ArgoUML据说也是支持xmi1的,不过我没测试

  10. tirisfal |

    如果是导出html,怎么支持utf-8呢?

  11. lake |

    好东西,谢谢,今晚有得折腾了。哈哈

  12. 雪候鸟 |

    @luckgo 正是, 正是, 多谢指正, 已经修改.

  13. luckgo |

    我折腾到深夜,装了Altova MapForce,但怎么也找不到导入xmi的菜单,倒是在google上找到Altova Umodel导入xmi的介绍,请问Laruence,是不是你搞错了耶?

  14. 網站製作學習誌 » [Web] 連結分享 |

    [...] 使用PHP_UML生成代码的UML图 [...]

  15. 玉丰 |

    哈哈,去试试。还有,建议换个验证码,现在这个太难用了。

  16. Tweets that mention 使用PHP_UML生成代码的UML图 | 风雪之隅 -- Topsy.com |

    [...] This post was mentioned on Twitter by 小白. 小白 said: 使用PHP_UML生成代码的UML图 – http://goo.gl/UAQp [...]

  17. 雪候鸟 |

    @cc0cc 有, visio 03据说有个插件, 可以把UML图导出成XMI. PHP_UML就可以根据XMI生成PHP代码了, 当然, mapForce也可以导出XMI

  18. toms |

    要是能进一步识别程序的调用关系就更好啦

  19. cc0cc |

    哥学社不遗余力地顶起,有没有反向的办法,通过uml生成php代码?

Leave a Reply

*