php源码逆向工程转化为UML类图

  通过php源码导出uml类图能够方便我们查看整体项目的类结构,方便我们去阅读源码以及理解。找到一个项目, phuml使用php代码扫描php代码文件,通过extends  implements以及注解等形式, 描绘出DOT格式的画图文件,再通过Graphviz软件将DOT图形文件转化为png图片格式,大致原理应该是这样的。

  1.项目通过composer安装:   https://packagist.org/packages/phuml/phuml

  2.官网文档:   https://montealegreluis.com/phuml/

  3.常用命令:  

./vendor/bin/phuml phuml:diagram -r -a -b -i -o -p dot -e classic ./tmp/ example.png

扫描./tmp/目录下所有的php文件,通过dot命令(安装 Graphviz软件)生成 example.png类图文件

   例如拿laravel项目作为案例, 大致生成的类图如下:

    

 

   很简单的就能描绘出类图了。   不过需要对class里面的属性字段数据类型,  方法返回值等写好相应的注解,  这样程序才能通注解拿到更多的信息,描绘出来的类图更加完整 。   使用phpstorm编码,  注解简单就写好了,不用我们手动写。

 

   优点:  跨平台性好,简单方便。  例如网上所谓的  EA软件只能在windows上运行, 并且自己试了一下这个软件只能扫描php5.5版本以下的代码,例如使用数组必须使用array()  使用[]则扫描报错结束。  首先平台兼容性查,其次支持php版本以及代码要求有点高, 而且对于注解是不会扫描的。。。, 总体来说不怎么好用,但是EA这个软件可以自己调整类图, phuml调整不了。

 

   缺点:     目前这个作者是个老外, 应该很久不维护了, 他只描绘出了    继承 ,  实现接口 ,  普通关联关系  以及  类的属性和方法,  对于  组合关系    聚合关系等没有实现,  有兴趣可以尝试修改源码。  我猜实现原理,应该是通过 phuml将这些php文件都include进来,  之后, 根据反射机制,拿到注解以及每个类的属性,方法,返回值等。  最后描绘成为dot文件,   之后借助dot命令将dot格式的文件转化为png图片。     组合和聚合应该体现在成员属性上,  普通的关联关系应该体现在 方法的参数  返回值等。  这个可以尝试修改源码。

  除此之外,还有 http://plantuml.com/zh/index   plantuml方案

  plantuml方案其实也很爽。  把文件后缀改为.puml,  phostorm自动识别并且画好uml图,所见即所得。

  推荐github项目工具:  https://github.com/davidfuhr/php-plantumlwriter

  在线显示plnatuml:  https://liveuml.com/

   将自己的类图先根据这个工具生成,继承  泛化关系都不用管了。  只需要写一些  组合  聚合  依赖关系即可。    

   自己基于plantuml做了个小工具,根据php源码目录生成uml类图可以参考:

   https://github.com/dream-mo/plantuml  

   

  关于dot是什么可以查看我的文章:   https://blog.csdn.net/xyz_dream/article/details/88953146

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章