PHPのソースコードからクラス図をリバースエンジニアリングする php-class-diagram 【概要】

dddjava/Jig にインスパイヤされて作り始めた php-class-diagram の機能が大枠できてきたので、php-class-diagramを使ってできることを紹介します。

概要

既存のPHPのソースコードをリバースエンジニアリングして、クラス図を生成するための PlantUMLのスクリプトを出力します。 出力したPlantUMLのスクリプトを、PlantUMLを使ってクラス図に変換します。

概念図

既存のソースコードからクラス図を生成することで、ソースコードだけからは読み取るのが難しい namespace構成とクラスの依存関係を、可視化することができます。

既存のソースコードのnamespace構成とクラスの依存関係を可視化することによって、既存のソースコードの設計の改善や機能追加の方針の検討に役立てることができます。

※ただし、依存の矢印を表示するためには、プロパティ宣言に型宣言(PHP7.4以降)か、PHPDocの@var コメントで型を明示してある必要があります。

PlantUML の利用方法

php-class-diagramは、PlantUMLを利用することが前提となります。PlantUMLを利用する選択肢は様々です。

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に組込む等も可能です。

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.