PHPのソースコードからクラス図をリバースエンジニアリングする php-class-diagram 【概要】
2021/11/07
2021/12/05
dddjava/Jig にインスパイヤされて作り始めた php-class-diagram の機能が大枠できてきたので、php-class-diagramを使ってできることを紹介します。
概要
既存のPHPのソースコードをリバースエンジニアリングして、クラス図を生成するための PlantUMLのスクリプトを出力します。 出力したPlantUMLのスクリプトを、PlantUMLを使ってクラス図に変換します。
既存のソースコードからクラス図を生成することで、ソースコードだけからは読み取るのが難しい namespace構成とクラスの依存関係を、可視化することができます。
既存のソースコードのnamespace構成とクラスの依存関係を可視化することによって、既存のソースコードの設計の改善や機能追加の方針の検討に役立てることができます。
※ただし、依存の矢印を表示するためには、プロパティ宣言に型宣言(PHP7.4以降)か、PHPDocの@var コメントで型を明示してある必要があります。
PlantUML の利用方法
php-class-diagramは、PlantUMLを利用することが前提となります。PlantUMLを利用する選択肢は様々です。
- PlantUMLサーバに、貼り付けて図を生成する。(PlantUMLサーバをローカルで動かすことも可能)
- IDE等に組込まれたツールで変換する。https://plantuml.com/ja/running
- コマンドラインで実行する。https://plantuml.com/ja/command-line javaの実行環境の用意は必要です。
dockerの環境があれば、PlantUML用のjava環境等の準備が不要になり、以下のコマンドで図を生成することが可能です。
php php-class-diagram.phar src | docker run --rm -i think/plantuml -tpng > output.png |
- php-class-diagram.phar
- php-class-diagramのPHAR形式ファイル
- src
- 解析対象のフォルダ
追記:php-class-diagramとPlantUMLを含むdockerイメージを使うことができるようになりました。
docker があれば、PHPソースコードからクラス図を自動生成できる
出力例
php-class-diagram自身のソースコードに対して、クラス図を生成しました。
フィールドとメソッドの情報を出力するかどうかは、オプションにより制御可能です。
コマンドラインで、対象フォルダのクラス図を作成できるので、CIに組込む等も可能です。