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

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