通過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