Ray.Diアプリケーションのグラフ化

Ray.Diは洗練されたアプリケーションのオブジェクトグラフを詳細に表すことができます。オブジェクトビジュアルグラファーは、このデータを理解しやすいビジュアライゼーションとして公開します。複雑なアプリケーションの複数のクラスの束縛や依存関係を、統一されたダイアグラムで表示することができます。

.dotファイルの生成

Ray.Diのオブジェクトビジュアルグラファーは、オープンソースのグラフ可視化パッケージのGraphVizを活用してて、視覚化とともにグラフの仕様を明らかにします。

Injectorのグラフ.dotファイルを作成するには、以下のコードを使用します。

use Ray\ObjectGrapher\ObjectGrapher;

$dot = (new ObjectGrapher)(new FooModule);
file_put_contents('path/to/graph.dot', $dot);

.dotファイル

上記のコードを実行すると、グラフを指定した.dotファイルが生成されます。ファイルの各エントリは、グラフのノードまたはエッジを表します。以下は.dotファイルのサンプルです。

digraph injector {
graph [rankdir=TB];
dependency_BEAR_Resource_ResourceInterface_ [style=dashed, margin=0.02, label=<<table cellspacing="0" cellpadding="5" cellborder="0" border="0"><tr><td align="left" port="header" bgcolor="#ffffff"><font color="#000000">BEAR\\Resource\\ResourceInterface<br align="left"/></font></td></tr></table>>, shape=box]
dependency_BEAR_Resource_FactoryInterface_ [style=dashed, margin=0.02, label=<<table cellspacing="0" cellpadding="5" cellborder="0" border="0"><tr><td align="left" port="header" bgcolor="#ffffff"><font color="#000000">BEAR\\Resource\\FactoryInterface<br align="left"/></font></td></tr></table>>, shape=box]
dependency_BEAR_Resource_ResourceInterface_ -> class_BEAR_Resource_Resource [style=dashed, arrowtail=none, arrowhead=onormal]
dependency_BEAR_Resource_FactoryInterface_ -> class_BEAR_Resource_Factory [style=dashed, arrowtail=none, arrowhead=onormal]
}

.dotファイルのレンダリング

生成されたコードをGraphvizOnlineに貼り付けるとグラフがレンダリングされます。

Linuxでは、コマンドラインのdotツールを使って、.dotファイルを画像に変換することができます。

dot -T png graph.dot > graph.png

graph

グラフ表示

エッジ

  • 実線 は、実装から依存する型への依存を表します。
  • 破線 は、型からその実装への束縛を表します。
  • 二重矢印 は、束縛または依存関係が Provider にあることを表します。

ノード

  • 実装の型は 黒色の背景 で表示されます。
  • 実装のインスタンスには 灰色の背景 を与えられています。